Matching the bouy data to the other data collected

hilo <- hbb_wku_h_xts
hilo <- data.frame(date=index(hilo), coredata(hilo))
hilo <- hilo[529:54816,]
hilo
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes
# which(hilo$date=="2010-10-23 00:00:00") = index 529 

# which(hilo$date=="2016-12-31 23:00:00") = index 54816
length(hilo[,1]) # we are left with 54288 lines of data
<<<<<<< Updated upstream
[1] 54288
54816 - length(hilo[,1]) # we lost 528 values 
=======
[1] 54288
54816 - length(hilo[,1]) # we lost 528 values 
>>>>>>> Stashed changes
[1] 528

Changing column names

# removing columns that we are not using 
hilo$date.2 <- NULL # another date column
hilo$date.1 <- NULL # another date column
hilo$BGARFU <- NULL # ?
hilo$cfs <- NULL
hilo$DOmgL <- NULL # dissolved oxygen
#hilo$Doper <- NULL # dissolved oxygen
hilo$PAR1 <- NULL # ?
hilo$pH <- NULL # pH
hilo$NTU <- NULL # a different measurement for turbitity
hilo$DOper10 <- NULL # dissolved oxygen

# colnames(hilo) <- c("Date", "cfs", "RiverFlow-cumec", "LogRiverFlow-cumec", "Chlorophyll-RFU", "Salinity-PPT", "Temp-C", "chlorophyll-calibrator", "Turbidity-NTU")
# does not work ???

hilo
<<<<<<< Updated upstream

====================================================

FULL DATA SET 2012-2016

Descriptives: PLots

River Flow FULL DATA SET

length(hilo$logcms[which(is.na(hilo$logcms)==TRUE)]) # 12 NAs 
[1] 12
which(is.na(hilo$logcms)==TRUE)
 [1] 50509 50510 50511 50512 50513 50514 50515 50516 50517 50518
[11] 50519 50520
RiverFlow <- ggplot(hilo,  aes(x = date, y = as.numeric(cms))) + 
  geom_line()

print(RiverFlow + ggtitle("River Flow")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

CHL FULL DATA SET

length(hilo$ChlRFU[which(is.na(hilo$ChlRFU)==TRUE)]) # 20464 NAs
[1] 20464
which(as.numeric(hilo$ChlRFU)==max(as.numeric(na.omit(hilo$ChlRFU)))) # 15.3 max 
[1] 38974
# CHL tells us where in the data set this happened  
hilo[38974,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

CHL <- ggplot(hilo,  aes(x = date, y = as.numeric(ChlRFU))) + 
  geom_line()

print(CHL + ggtitle("Chlorophyll ")+labs(x="Time", y = "Chlorophyll  - relative fluorescence units (RFU)"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Turbity FULL DATA SET

length(hilo$Corr.NTU[which(is.na(hilo$Corr.NTU)==TRUE)]) #15012 NAs
[1] 15012
which(as.numeric(hilo$Corr.NTU)==max(as.numeric(na.omit(hilo$Corr.NTU)))) # 88.4
[1] 33243
# tells us where in the data set this happened
hilo[33243,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

TURB <- ggplot(hilo,aes(x = date, y = as.numeric(Corr.NTU))) + 
  geom_line()

print(TURB + ggtitle("Turbidity ")+labs(x="Time", y = "Turbidity - Nephelometric Turbidity Units (NTU)"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Salinity FULL DATA SET

length(hilo$saltppt[which(is.na(hilo$saltppt)==TRUE)]) #11330 NAs
[1] 11330
SALT <- ggplot(hilo,  aes(x = date, y = as.numeric(saltppt))) + 
  geom_line()

print(SALT + ggtitle("Salinity")+labs(x="Time", y = "Salinity - unit parts per thousand (PPT)"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

======================================================== # Histograms FULL DATA SET ## River Flow Histogram

hist(as.numeric(hilo$logcms), main = "Histogram of Log River Flow", xlab = "Log River Flow")
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

# this looks okay

CHL Histogram

# VERY skewed
hist(as.numeric(hilo$ChlRFU), main = "Histogram of Chlorophyll", xlab = "Chlorophyll  - relative fluorescence units (RFU)")


# this looks better
hist(log(as.numeric(hilo$ChlRFU)), main = "Histogram of Log Chlorophyll", xlab = "Chlorophyll")
NaNs produced

# not sure what happens to units when taking the log 

Turbity Histogram

# VERY skewed
hist(as.numeric(hilo$Corr.NTU), main = "Histogram of Turbidity", xlab = "Turbidity - Nephelometric Turbidity Units (NTU)")


# this looks better
hist(log(as.numeric(hilo$Corr.NTU)), main = "Histogram of Log Turbidity", xlab = "Turbidity")

# not sure what happens to units when taking the log 

Salinity Histogram

# skewed
hist(as.numeric(hilo$saltppt), main = "Histogram of Salinity", xlab = "Salinity - unit parts per thousand (PPT)")


# this is worst!
hist(log(as.numeric(hilo$saltppt)), main = "Histogram of Log Salinity", xlab = "Salinity")

# not sure what happens to units when taking the log 

========================================================= # NEW DATA SET-Modified Data 2013-2015

# start date: 2013-01-01 00:00:00
# end date: 2015-12-31 23:00:00
hilomodified <- hilo[19225:45504,]
length(hilo[,1])-length(hilomodified[,1])
[1] 28008
# lost 28008 entries of data 

length(hilomodified[,1])-528 # we are left with 25752 entries of data 
[1] 25752
head(hilomodified)
<<<<<<< Updated upstream
tail(hilomodified)
<<<<<<< Updated upstream
NA

Descriptives on all variables MODIFIED DATA SET: Using Favstats

River Flow Favstats

library(mosaic)
<<<<<<< Updated upstream
Auto-converting character to numeric.
=======
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
Registered S3 method overwritten by 'mosaic':
  method                           from   
  fortify.SpatialPolygonsDataFrame ggplot2

The 'mosaic' package masks several functions from core packages in order to add 
additional features.  The original behavior of these functions should not be affected by this.

Attaching package: ‘mosaic’

The following object is masked from ‘package:Matrix’:

    mean

The following object is masked from ‘package:scales’:

    rescale

The following objects are masked from ‘package:dplyr’:

    count, do, tally

The following object is masked from ‘package:ggplot2’:

    stat

The following objects are masked from ‘package:stats’:

    binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test, quantile, sd, t.test,
    var

The following objects are masked from ‘package:base’:

    max, mean, min, prod, range, sample, sum
>>>>>>> Stashed changes

CHL Favstats

favstats(hilomodified$ChlRFU)
Auto-converting character to numeric.
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

Turbitity Favstats

favstats(hilomodified$Corr.NTU)
Auto-converting character to numeric.
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

Salinity Favstats

favstats(hilomodified$saltppt)
Auto-converting character to numeric.
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes
<<<<<<< Updated upstream =======
favstats(hilomodified$TempC)
Auto-converting character to numeric.
favstats(hilomodified$Doper)
Auto-converting character to numeric.
>>>>>>> Stashed changes

===================================================== # MODIFIED DATA SET 2013-2015 # Descriptives: Plots

River Flow MODIFIED

length(hilomodified$logcms[which(is.na(hilomodified$logcms)==TRUE)]) # No NAs, YAY!
[1] 0
which(is.na(hilomodified$logcms)==TRUE)
integer(0)
RiverFlowMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(cms))) + 
  geom_line()

print(RiverFlowMod + ggtitle("River Flow")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

CHL MODIFIED

sum(is.na(hilomodified$ChlRFU)==TRUE) # 1884 NAs
[1] 1884
#which(is.na(hilomodified$ChlRFU)==TRUE)
# max(as.numeric(na.omit(hilo$ChlRFU))) # 15.3
which(as.numeric(hilomodified$ChlRFU)==15.3)
[1] 19750
hilo[38974,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

CHLMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(ChlRFU))) + 
  geom_line()

print(CHLMod + ggtitle("Chlorophyll ")+labs(x="Time", y = "Chlorophyll  - relative fluorescence units (RFU)"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Turbitity MODIFIED

length(hilomodified$Corr.NTU[which(is.na(hilomodified$Corr.NTU)==TRUE)]) # 2704 NAs
[1] 2704
# max(as.numeric(na.omit(hilo$Corr.NTU))) # 88.4
which(as.numeric(hilo$Corr.NTU)==88.4)
[1] 33243
hilo[33243,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

TURBMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(Corr.NTU))) + 
  geom_line()

print(TURBMod + ggtitle("Turbidity ")+labs(x="Time", y = "Turbidity - Nephelometric Turbidity Units (NTU)"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Salinity MODIFIED

length(hilomodified$saltppt[which(is.na(hilomodified$saltppt)==TRUE)]) # 2267 NAs
[1] 2267
SALTMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(saltppt))) + 
  geom_line()

print(SALTMod + ggtitle("Salinity")+labs(x="Time", y = "Salinity - unit parts per thousand (PPT)"))

Tempurature MODIFIED

length(hilomodified$TempC[which(is.na(hilomodified$TempC)==TRUE)]) # 2267 NAs
[1] 1702
TempMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(TempC))) + 
  geom_line()

print(TempMod + ggtitle("Temperature")+labs(x="Time", y = "Temperature - Celsius"))

Dissolved Oxygen MODIFIED

length(hilomodified$Doper[which(is.na(hilomodified$Doper)==TRUE)]) # 2267 NAs

TempMod <- ggplot(hilomodified,  aes(x = date, y = as.numeric(Doper))) + 
  geom_line()

print(TempMod + ggtitle("Dissolved Oxygen")+labs(x="Time", y = "Dissolved Oxygen in percent of saturation"))

=================================================== # Histograms MODIFIED

River Flow MODIFIED

<<<<<<< Updated upstream
hist(as.numeric(hilomodified$logcms), main = "Histogram of Log River Flow", xlab = "Log River Flow")

=======
hist(as.numeric(hilomodified$cms), main = "Histogram of Log River Flow", xlab = "Log River Flow", breaks =50, xlim = c(0,200))

>>>>>>> Stashed changes

# this looks okay

CHL MODIFIED

# VERY skewed
hist(as.numeric(hilomodified$ChlRFU), main = "Histogram of Chlorophyll", xlab = "Chlorophyll  - relative fluorescence units (RFU)")
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

# this looks better
hist(log(as.numeric(hilomodified$ChlRFU)), main = "Histogram of Log Chlorophyll", xlab = "Chlorophyll")
NaNs produced
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes
# not sure what happens to units when taking the log 

Turbitity MODIFIED

# VERY skewed
hist(as.numeric(hilomodified$Corr.NTU), main = "Histogram of Turbidity", xlab = "Turbidity - Nephelometric Turbidity Units (NTU)")
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

# this looks better
hist(log(as.numeric(hilomodified$Corr.NTU)), main = "Histogram of Log Turbidity", xlab = "Turbidity")
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes
# not sure what happens to units when taking the log 

Salinity MODIFIED

# skewed
hist(as.numeric(hilomodified$saltppt), main = "Histogram of Salinity", xlab = "Salinity - unit parts per thousand (PPT)")

# this is worst!
hist(log(as.numeric(hilomodified$saltppt)), main = "Histogram of Log Salinity", xlab = "Salinity")
# not sure what happens to units when taking the log 

=============================================================

Plot with ALL Var 2013-2015

It is hard to see what is going on

AllYears <- ggplot(hilomodified,  aes(x = date, y = as.numeric(logcms))) + 
  geom_line()+
  geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="blue")

print(AllYears + ggtitle("Hilo Bay")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

============================================================== # Descriptives by Storm We are picking one storm from each year. We can indicate a storm has occurred by the extreme events in the river flow data. We will not use the log (which is logbase10) in order to see the extreme events When salinity is below 35 this also indicates a storm has occurred.

We will break the data set by year to find the most extreme event for each year.

hilo2013 <- hilomodified[1:8760,]

hilo2014 <- hilomodified[8761:17520,]

hilo2015 <- hilomodified[17521:length(hilomodified[,1]),]

2013 Data & Plot

# max(as.numeric(hilo2013$logcms)) # this is log base 10 
# This is NOT the natural log
max(as.numeric(hilo2013$cms)) # 207.186 
[1] 207.186
which(as.numeric(hilo2013$cms) == max(as.numeric(hilo2013$cms)))
[1] 3550
hilo2013[3550,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes
# all values for this storm are NA

plot2013 <- ggplot(hilo2013,  aes(x = date, y = as.numeric(cms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="blue")

print(plot2013 + ggtitle("2013")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Split 2013 into 6 months to get a better visual

# R2013.1 <- ggplot(hilo2013[1:(length(hilo2013[,1])/2),],  aes(x = date, y = as.numeric(cms))) + 
#   geom_line(color="black")+
#   geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
#   geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
#   geom_line(aes(y=as.numeric(ChlRFU)),color="blue")
# print(R2013.1 + ggtitle("River Flow")+labs(x="Time", y = "River Flow - cubic meters per second"))
# R2013.1+ylim(0,40)
# 
# 
# R2013.2 <- ggplot(hilo2013[(length(hilo2013[,1])/2):length(hilo2013[,1]),],  aes(x = date, y = as.numeric(cms))) + 
#   geom_line(color="black")+
#   geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
#   geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
#   geom_line(aes(y=as.numeric(ChlRFU)),color="blue")
# print(R2013.2 + ggtitle("River Flow")+labs(x="Time", y = "River Flow - cubic meters per second"))
# R2013.2+ylim(0,40)

2014 Data & Plot

# Max river flow in the overall data set
max(as.numeric(hilo2014$cms))
[1] 472.4939
max(as.numeric(hilomodified$cms))
[1] 472.4939
which(as.numeric(hilo2014$cms) == max(as.numeric(hilo2014$cms)))
[1] 5263
hilo2014[5263,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

R2014 <- ggplot(hilo2014,  aes(x = date, y = as.numeric(logcms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="blue")

print(R2014 + ggtitle("2014")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

2015 Data & Plot

max(as.numeric(hilo2015$cms))
[1] 232.2449
which(as.numeric(hilo2015$cms) == max(as.numeric(hilo2015$cms)))
[1] 6475
hilo2015[6475,]
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

R2015 <- ggplot(hilo2015,  aes(x = date, y = as.numeric(logcms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "darkred") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="darkgreen") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="blue")

print(R2015 + ggtitle("2015")+labs(x="Time", y = "River Flow - cubic meters per second"))
<<<<<<< Updated upstream

=======

>>>>>>> Stashed changes

Separating the Data by Storm

outcomes <- as.numeric(hilomodified$saltppt)<25 
index.lt25 <- which(outcomes==TRUE)

poss.storms <- hilomodified[index.lt25,]
poss.storms
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes
outcomes.35 <- as.numeric(hilomodified$saltppt)<35 
index.lt35 <- which(outcomes==TRUE)
index.lt25
<<<<<<< Updated upstream
   [1]   159   160   161   162   163   164   209   210   213   218
  [11]   225   227   228   230   231   232   234   759   765   766
  [21]   815   816   894   895   899   900   901   902   903   904
  [31]   905   906   907   908  1112  1113  1114  1115  1116  1117
  [41]  1118  1119  1120  1121  1122  1123  1124  1125  1126  1131
  [51]  1132  1133  1134  1135  1136  1137  1138  1139  1140  1141
  [61]  1142  1143  1144  1145  1146  1147  1148  1149  1150  1151
  [71]  1152  1153  1154  1155  1156  1157  1158  1159  1160  1161
  [81]  1162  1163  1164  1165  1166  1167  1168  1169  1170  1171
  [91]  1172  1173  1174  1175  1176  1177  1178  1179  1180  1181
 [101]  1182  1183  1184  1185  1186  1187  1188  1189  1190  1191
 [111]  1192  1193  1194  1195  1196  1197  1198  1200  1201  1202
 [121]  1204  1205  1206  1207  1208  1209  1210  1211  1212  1213
 [131]  1214  1215  1216  1217  1218  1219  1220  1221  1222  1223
 [141]  1224  1225  1226  1227  1228  1229  1230  1231  1232  1233
 [151]  1234  1235  1236  1237  1238  1239  1240  1241  1242  1243
 [161]  1244  1245  1246  1247  1248  1249  1250  1251  1252  1253
 [171]  1254  1255  1256  1257  1258  1259  1260  1261  1262  1263
 [181]  1264  1265  1266  1267  1268  1269  1270  1271  1272  1273
 [191]  1274  1275  1276  1277  1278  1279  1283  1284  1285  1286
 [201]  1288  1289  1293  1294  1295  1296  1297  1298  1299  1300
 [211]  1301  1302  1303  1304  1305  1306  1307  1308  1309  1310
 [221]  1311  1312  1313  1314  1315  1316  1317  1318  1319  1320
 [231]  1321  1322  1323  1324  1325  1326  1327  1328  1329  1330
 [241]  1331  1332  1333  1334  1335  1336  1337  1338  1339  1340
 [251]  1341  1342  1343  1344  1345  1346  1347  1348  1349  1350
 [261]  1351  1352  1353  1354  1355  1356  1357  1358  1359  1360
 [271]  1361  1362  1363  1364  1365  1366  1368  1369  1370  1371
 [281]  1372  1373  1374  1375  1376  1377  1378  1379  1380  1381
 [291]  1382  1383  1384  1391  1392  1393  1410  1411  1413  1414
 [301]  1415  1416  1417  1418  1419  1420  1421  1424  1425  1427
 [311]  1428  1431  1432  1433  1434  1435  1436  1437  1438  1439
 [321]  1440  1442  1443  1444  1445  1446  1447  1450  1451  1452
 [331]  1453  1454  1458  1478  1479  1480  1481  1482  1483  1484
 [341]  1490  1515  2137  3485  3487  3488  3489  3490  3491  3492
 [351]  3495  3496  3497  3498  3499  3500  3501  3502  3503  3508
 [361]  3509  3513  3518  3519  5312  5313  5317  5318  5319  5320
 [371]  5321  5322  5323  5325  5326  5327  5328  5329  5330  5331
 [381]  5332  5334  5335  5336  5337  5338  5339  5340  5341  5342
 [391]  5343  5344  5345  5346  5347  5348  5349  5350  5368  5474
 [401]  5475  5485  5486  5487  5488  5489  5491  5492  5509  5756
 [411]  7545  8672  8673  8674  8675  8676  8677  8678  8679  8680
 [421]  8681  8682  8683  8713  8714  8715  8716  8717  8718  8719
 [431]  8720  8721  8722  8723  8724  8725  8726  8727  8728  8729
 [441]  8730  8731  8732  8733  8734  8735  8736  8737  8738  8739
 [451]  8740  8741  8742  8743  8744  8745  8746  8747  8748  8749
 [461]  8750  8751  8752  8753  8754  8755  8756  8757  8758  8759
 [471]  8760  8761  8762  8763  8764  8765  8766  8767  8768  8769
 [481]  8770  8771  8772  8773  8774  8775  8776  8835  8836  8837
 [491]  8839  8840  8841  8842  8843  8844  8845  8846  8847  8848
 [501]  8849  8855  8856  8857  8858  8859  8862  8863  8864  8865
 [511]  8876  8927  8932  8933  8945 10394 10395 10396 10397 10398
 [521] 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408
 [531] 10410 10411 10413 10414 10421 10422 10425 10427 10428 10429
 [541] 10430 10431 10432 10433 10434 10435 10436 10437 10438 10441
 [551] 10442 10443 10444 10445 10446 10450 10538 10539 10540 10541
 [561] 10544 10545 10546 10547 10552 10553 10554 10555 10556 10557
 [571] 10558 10559 10570 10644 10647 10652 10656 10657 10659 10664
 [581] 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674
 [591] 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684
 [601] 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694
 [611] 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704
 [621] 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714
 [631] 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724
 [641] 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734
 [651] 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744
 [661] 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754
 [671] 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764
 [681] 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774
 [691] 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784
 [701] 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794
 [711] 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804
 [721] 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814
 [731] 10815 10816 10817 10818 10819 10820 10830 10831 10832 10833
 [741] 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928
 [751] 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938
 [761] 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948
 [771] 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958
 [781] 10959 10960 10964 10965 10966 10967 10968 10969 10970 10971
 [791] 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981
 [801] 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991
 [811] 10992 10993 10994 10995 10997 10998 11000 11001 11002 11003
 [821] 11004 11005 11006 11007 11008 11009 11010 11011 11012 11019
 [831] 11020 11021 11022 11023 11024 11025 11026 11027 11028 11030
 [841] 11031 11032 11033 11065 11077 11086 11093 11094 11095 11096
 [851] 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106
 [861] 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116
 [871] 11117 11118 11119 11120 11122 11123 11124 11125 11126 11127
 [881] 11128 11129 11130 11131 11132 11133 11134 11135 11136 11139
 [891] 11140 11149 11150 11151 11204 11205 11210 11211 11212 11213
 [901] 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223
 [911] 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233
 [921] 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243
 [931] 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253
 [941] 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263
 [951] 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273
 [961] 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283
 [971] 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293
 [981] 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303
 [991] 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313
=======

   [1]   159   160   161   162   163   164   209   210   213   218   225   227
  [13]   228   230   231   232   234   759   765   766   815   816   894   895
  [25]   899   900   901   902   903   904   905   906   907   908  1112  1113
  [37]  1114  1115  1116  1117  1118  1119  1120  1121  1122  1123  1124  1125
  [49]  1126  1131  1132  1133  1134  1135  1136  1137  1138  1139  1140  1141
  [61]  1142  1143  1144  1145  1146  1147  1148  1149  1150  1151  1152  1153
  [73]  1154  1155  1156  1157  1158  1159  1160  1161  1162  1163  1164  1165
  [85]  1166  1167  1168  1169  1170  1171  1172  1173  1174  1175  1176  1177
  [97]  1178  1179  1180  1181  1182  1183  1184  1185  1186  1187  1188  1189
 [109]  1190  1191  1192  1193  1194  1195  1196  1197  1198  1200  1201  1202
 [121]  1204  1205  1206  1207  1208  1209  1210  1211  1212  1213  1214  1215
 [133]  1216  1217  1218  1219  1220  1221  1222  1223  1224  1225  1226  1227
 [145]  1228  1229  1230  1231  1232  1233  1234  1235  1236  1237  1238  1239
 [157]  1240  1241  1242  1243  1244  1245  1246  1247  1248  1249  1250  1251
 [169]  1252  1253  1254  1255  1256  1257  1258  1259  1260  1261  1262  1263
 [181]  1264  1265  1266  1267  1268  1269  1270  1271  1272  1273  1274  1275
 [193]  1276  1277  1278  1279  1283  1284  1285  1286  1288  1289  1293  1294
 [205]  1295  1296  1297  1298  1299  1300  1301  1302  1303  1304  1305  1306
 [217]  1307  1308  1309  1310  1311  1312  1313  1314  1315  1316  1317  1318
 [229]  1319  1320  1321  1322  1323  1324  1325  1326  1327  1328  1329  1330
 [241]  1331  1332  1333  1334  1335  1336  1337  1338  1339  1340  1341  1342
 [253]  1343  1344  1345  1346  1347  1348  1349  1350  1351  1352  1353  1354
 [265]  1355  1356  1357  1358  1359  1360  1361  1362  1363  1364  1365  1366
 [277]  1368  1369  1370  1371  1372  1373  1374  1375  1376  1377  1378  1379
 [289]  1380  1381  1382  1383  1384  1391  1392  1393  1410  1411  1413  1414
 [301]  1415  1416  1417  1418  1419  1420  1421  1424  1425  1427  1428  1431
 [313]  1432  1433  1434  1435  1436  1437  1438  1439  1440  1442  1443  1444
 [325]  1445  1446  1447  1450  1451  1452  1453  1454  1458  1478  1479  1480
 [337]  1481  1482  1483  1484  1490  1515  2137  3485  3487  3488  3489  3490
 [349]  3491  3492  3495  3496  3497  3498  3499  3500  3501  3502  3503  3508
 [361]  3509  3513  3518  3519  5312  5313  5317  5318  5319  5320  5321  5322
 [373]  5323  5325  5326  5327  5328  5329  5330  5331  5332  5334  5335  5336
 [385]  5337  5338  5339  5340  5341  5342  5343  5344  5345  5346  5347  5348
 [397]  5349  5350  5368  5474  5475  5485  5486  5487  5488  5489  5491  5492
 [409]  5509  5756  7545  8672  8673  8674  8675  8676  8677  8678  8679  8680
 [421]  8681  8682  8683  8713  8714  8715  8716  8717  8718  8719  8720  8721
 [433]  8722  8723  8724  8725  8726  8727  8728  8729  8730  8731  8732  8733
 [445]  8734  8735  8736  8737  8738  8739  8740  8741  8742  8743  8744  8745
 [457]  8746  8747  8748  8749  8750  8751  8752  8753  8754  8755  8756  8757
 [469]  8758  8759  8760  8761  8762  8763  8764  8765  8766  8767  8768  8769
 [481]  8770  8771  8772  8773  8774  8775  8776  8835  8836  8837  8839  8840
 [493]  8841  8842  8843  8844  8845  8846  8847  8848  8849  8855  8856  8857
 [505]  8858  8859  8862  8863  8864  8865  8876  8927  8932  8933  8945 10394
 [517] 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406
 [529] 10407 10408 10410 10411 10413 10414 10421 10422 10425 10427 10428 10429
 [541] 10430 10431 10432 10433 10434 10435 10436 10437 10438 10441 10442 10443
 [553] 10444 10445 10446 10450 10538 10539 10540 10541 10544 10545 10546 10547
 [565] 10552 10553 10554 10555 10556 10557 10558 10559 10570 10644 10647 10652
 [577] 10656 10657 10659 10664 10665 10666 10667 10668 10669 10670 10671 10672
 [589] 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684
 [601] 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696
 [613] 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708
 [625] 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720
 [637] 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732
 [649] 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744
 [661] 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756
 [673] 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768
 [685] 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780
 [697] 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792
 [709] 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804
 [721] 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816
 [733] 10817 10818 10819 10820 10830 10831 10832 10833 10919 10920 10921 10922
 [745] 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934
 [757] 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946
 [769] 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958
 [781] 10959 10960 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973
 [793] 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985
 [805] 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10997 10998
 [817] 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011
 [829] 11012 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11030
 [841] 11031 11032 11033 11065 11077 11086 11093 11094 11095 11096 11097 11098
 [853] 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110
 [865] 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11122 11123
 [877] 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135
 [889] 11136 11139 11140 11149 11150 11151 11204 11205 11210 11211 11212 11213
 [901] 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225
 [913] 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237
 [925] 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249
 [937] 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261
 [949] 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273
 [961] 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285
 [973] 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297
 [985] 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309
 [997] 11310 11311 11312 11313
>>>>>>> Stashed changes
 [ reached getOption("max.print") -- omitted 2851 entries ]
poss.storms35 <- hilomodified[index.lt25,]
poss.storms35
<<<<<<< Updated upstream ======= >>>>>>> Stashed changes

hilomodified$date[16]
[1] "2013-01-01 15:00:00 UTC"
storm.1.7.13 <- ggplot(hilomodified[145:168,],  aes(x = date, y = as.numeric(cms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "lightsteelblue1") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="grey69") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="khaki")

print(storm.1.7.13 + ggtitle("Storm 1/7/13")+labs(x="Time"))
<<<<<<< Updated upstream

Trying to make the Rainfall plot easier to read

RiverFlow1 <- ggplot(hilomodified[1:100,],  aes(x = date, y = as.numeric(cms))) + 
  geom_line()

print(RiverFlow + ggtitle("River Flow")+labs(x="Time", y = "River Flow - cubic meters per second"))

=======

getwd()
[1] "/Users/odalysbar/Documents/MA321-SP21/HiloBay-Adolf/HiloBay_MA321_Spring21"
# write.csv(hilomodified,file="HiloBayNEW13to15.csv", row.names = FALSE)
storms
   [1]    2    3    4    5    6    8    9   10   11   13   14
  [12]   15   16   17   18   19   20   22   24   25   26   28
  [23]   29   33   34   35   37   38   40   41   44   45   46
  [34]   47   48   49   50   52   55   57   58   59   60   63
  [45]   64   65   66   67   70   71   72   73   74   75   78
  [56]   79   80   86   87   88   89   91   92   93   94   95
  [67]   96   97   98   99  100  102  103  104  105  106  107
  [78]  108  109  110  111  112  113  114  115  116  117  118
  [89]  119  120  121  122  123  124  125  126  127  128  129
 [100]  130  131  132  133  134  135  136  137  138  139  140
 [111]  141  142  143  144  145  146  147  148  149  150  151
 [122]  152  153  154  155  156  157  158  159  160  161  162
 [133]  163  164  165  166  167  168  169  170  171  172  173
 [144]  174  175  176  177  178  179  180  181  182  184  185
 [155]  186  187  188  189  190  191  192  193  194  195  196
 [166]  197  198  199  200  201  202  203  204  205  206  207
 [177]  208  209  210  211  212  213  214  215  216  217  218
 [188]  219  220  221  222  223  224  225  226  227  228  229
 [199]  230  231  232  233  234  235  236  237  238  239  240
 [210]  241  242  243  244  245  246  247  248  249  250  251
 [221]  252  253  254  255  256  257  258  259  260  261  262
 [232]  263  264  265  266  267  268  269  270  271  272  273
 [243]  274  275  276  277  278  279  280  281  282  283  284
 [254]  285  286  287  288  289  290  291  292  293  294  295
 [265]  296  297  298  299  300  301  302  303  304  305  306
 [276]  307  308  309  310  311  312  313  314  315  316  317
 [287]  318  319  320  321  322  323  324  325  326  327  328
 [298]  330  331  332  333  334  335  336  337  338  339  340
 [309]  342  344  345  346  347  348  349  350  351  354  355
 [320]  356  357  358  359  360  361  362  364  365  366  368
 [331]  369  370  371  373  374  375  376  377  378  379  381
 [342]  383  384  385  386  387  388  389  390  392  394  396
 [353]  397  398  399  400  401  402  404  407  408  410  411
 [364]  412  416  417  418  420  421  426  427  428  429  430
 [375]  431  432  433  434  437  438  439  440  441  442  443
 [386]  444  445  446  447  448  449  450  451  452  454  455
 [397]  456  457  459  464  465  466  472  473  474  475  476
 [408]  477  482  483  484  490  492  495  496  497  503  504
 [419]  505  513  514  517  523  524  532  534  535  538  543
 [430]  544  549  550  551  552  554  555  557  559  560  568
 [441]  571  572  574  575  577  578  579  580  581  582  583
 [452]  585  586  590  591  592  593  594  595  596  599  600
 [463]  603  604  605  612  613  620  621  622  635  636  637
 [474]  638  639  645  646  648  649  650  651  652  657  658
 [485]  660  661  662  663  664  665  666  667  670  671  672
 [496]  689  690  691  692  693  694  695  696  697  698  699
 [507]  700  701  702  703  704  706  707  710  711  712  713
 [518]  714  715  716  724  725  727  729  730  731  741  742
 [529]  747  748  749  750  751  752  753  754  755  756  757
 [540]  758  759  760  761  762  763  764  765  766  767  768
 [551]  769  770  771  772  773  775  776  779  780  784  785
 [562]  790  791  792  802  804  805  806  807  815  817  818
 [573]  819  829  831  832  833  834  835  836  838  839  840
 [584]  841  842  844  845  846  847  848  849  850  851  852
 [595]  853  854  855  856  857  858  859  861  863  864  865
 [606]  866  868  872  873  874  875  876  877  878  879  881
 [617]  882  883  884  885  886  887  888  889  890  891  892
 [628]  893  894  895  896  897  898  899  900  901  902  903
 [639]  904  905  906  907  908  909  910  911  912  913  914
 [650]  915  916  917  918  919  920  921  922  923  924  925
 [661]  926  927  928  929  930  931  932  933  934  935  936
 [672]  937  938  939  940  941  942  943  944  945  946  947
 [683]  948  949  950  951  952  953  954  955  956  957  958
 [694]  959  960  961  962  963  964  965  966  967  968  969
 [705]  970  971  972  973  974  975  976  977  978  979  980
 [716]  981  982  983  984  985  986  987  988  989  990  991
 [727]  992  993  994  995  996  997  998  999 1000 1001 1002
 [738] 1003 1004 1006 1007 1008 1009 1010 1011 1012 1013 1014
 [749] 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026
 [760] 1027 1028 1029 1030 1032 1033 1034 1035 1036 1038 1039
 [771] 1040 1041 1042 1043 1044 1046 1047 1048 1050 1052 1053
 [782] 1054 1055 1056 1058 1061 1062 1063 1067 1068 1069 1070
 [793] 1071 1074 1076 1077 1078 1079 1080 1082 1083 1084 1085
 [804] 1086 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099
 [815] 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110
 [826] 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121
 [837] 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132
 [848] 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143
 [859] 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154
 [870] 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165
 [881] 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176
 [892] 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187
 [903] 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198
 [914] 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209
 [925] 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220
 [936] 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231
 [947] 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242
 [958] 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253
 [969] 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264
 [980] 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275
 [991] 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285
 [ reached getOption("max.print") -- omitted 17039 entries ]

vector <- vector()
for(i in 1:length(storms)){
  if(isTRUE(abs(storms[i]-storms[i+1]) > 10)){
    stop <- storms[i]
  }else{
    stop <- 0
  }
  if(stop > 0){
    vector[i] <- stop
  }
}
vector[which(is.na(vector)==FALSE)]
  [1]   622   672  1706  1898  1924  1970  2081  2327  2388  2429
 [11]  2469  2493  2515  2537  2576  2714  2734  2772  2799  2825
 [21]  2866  2947  2998  3051  3068  3130  3196  3211  3226  3249
 [31]  3373  3746  3841  3856  3898  4343  4412  4438  4460  4507
 [41]  4534  4617  4660  4827  5006  5087  5107  5135  5237  5667
 [51]  5690  5735  5767  5786  5837  5851  5888  5900  5921  5968
 [61]  6048  6068  6092  6240  6270  6284  6320  6363  6379  6456
 [71]  6488  6599  6630  6864  6888  6908  6945  6959  6977  6999
 [81]  7025  7063  7076  7099  7134  7150  7222  7308  7443  7466
 [91]  7493  7678  7703  7733  7786  7805  7840  7863  7882  7933
[101]  7960  7978  8005  8031  8124  8167  8954  9013  9067  9091
[111]  9135  9160  9188  9256  9280  9303  9333  9377  9487  9505
[121] 10205 12119 12216 12238 13083 13095 14759 14786 14812 14831
[131] 14891 14946 14998 15028 15079 15099 15125 15140 15165 15187
[141] 15209 15526 15540 15553 15702 17365 17482 17512 17533 17585
[151] 17612 17657 17708 17734 17778 17811 17838 17871 17925 17978
[161] 18210 18233 18358 18888 18905 18921 19117 19192 19225 19269
[171] 19322 19342 19362 19378 19490 19504 19522 19628 21792 21813
[181] 21948 21981 22016 22075 22124 22220 23568
storm.1.7.13 <- ggplot(hilomodified[1:80,],  aes(x = date, y = as.numeric(cms))) +
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "lightsteelblue1") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="grey69") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="khaki")
Error in ggplot(hilomodified[1:80, ], aes(x = date, y = as.numeric(cms))) : 
  could not find function "ggplot"
startaxis <- vector()
endaxis <- vector()
i <- 1
while (i <= length(change.vector)) {
  if(isTRUE(change.vector[i] < 0)){
    startaxis[i] <- RiverFlow[i]
  }
  i <- i+1
}
begin<-which(is.na(startaxis) == FALSE)
begin
   [1]   33   58   77   85   86   87   88   90   91   92   93   94   95   96  103  104  105  106  108
  [20]  109  113  114  115  116  117  118  126  127  128  136  137  138  139  140  141  142  143  144
  [39]  145  146  147  148  149  150  151  152  153  188  190  191  192  193  194  195  196  197  198
  [58]  201  202  210  211  212  213  214  215  286  287  290  291  292  293  294  295  346  348  373
  [77]  376  383  396  416  432  438  439  542  550  553  556  558  559  574  577  578  579  580  581
  [96]  582  584  585  635  637  645  650  656  657  688  689  690  691  712  713  728  746  747  748
 [115]  749  750  751  752  753  754  804  816  817  818  830  832  833  838  840  841  843  844  845
 [134]  846  847  848  849  850  851  852  853  854  865  881  882  883  884  885  886  890  891  892
 [153]  893  894  905  950  951  953  954  955  956  957  958  959  960  961  962  963  985 1012 1016
 [172] 1055 1076 1077 1078 1084 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1104 1105 1106
 [191] 1107 1108 1109 1110 1123 1124 1140 1141 1142 1143 1144 1145 1146 1147 1148 1150 1158 1159 1160
 [210] 1161 1162 1163 1165 1182 1196 1197 1198 1199 1204 1205 1206 1207 1208 1209 1210 1211 1241 1242
 [229] 1243 1244 1245 1258 1260 1261 1262 1278 1279 1280 1281 1282 1283 1284 1290 1291 1292 1293 1294
 [248] 1295 1296 1304 1305 1313 1314 1318 1333 1336 1337 1338 1339 1340 1341 1368 1370 1371 1372 1373
 [267] 1374 1432 1462 1466 1472 1513 1526 1543 1550 1552 1554 1559 1587 1590 1591 1613 1674 1676 1683
 [286] 1687 1695 1717 1718 1719 1720 1721 1722 1742 1743 1744 1783 1789 1807 1808 1838 1840 1849 1862
 [305] 1884 1887 1895 1919 1939 1940 1957 1968 1985 1986 1988 1989 1990 1992 1994 1995 1996 2005 2006
 [324] 2007 2008 2009 2010 2011 2013 2014 2015 2016 2017 2018 2023 2024 2058 2061 2063 2094 2101 2102
 [343] 2103 2104 2105 2106 2107 2108 2109 2110 2111 2126 2127 2128 2129 2198 2212 2239 2240 2241 2270
 [362] 2272 2274 2296 2309 2311 2325 2352 2353 2354 2355 2358 2359 2382 2417 2418 2452 2455 2456 2457
 [381] 2551 2552 2553 2554 2571 2574 2590 2591 2592 2595 2596 2597 2604 2605 2606 2607 2608 2609 2610
 [400] 2611 2612 2647 2659 2660 2661 2662 2669 2670 2671 2760 2767 2768 2770 2783 2787 2796 2843 2844
 [419] 2862 2864 2879 2881 2886 2887 2890 2891 2892 2901 2902 2903 2904 2905 2906 2907 2909 2910 2918
 [438] 2919 2971 2972 2977 3044 3045 3127 3140 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3156
 [457] 3157 3158 3174 3194 3224 3225 3237 3238 3239 3240 3241 3242 3265 3266 3280 3281 3282 3283 3294
 [476] 3295 3296 3302 3303 3328 3329 3330 3331 3338 3367 3387 3392 3397 3398 3399 3400 3401 3428 3430
 [495] 3432 3437 3454 3457 3458 3459 3460 3461 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481
 [514] 3482 3483 3484 3498 3499 3507 3509 3513 3518 3519 3520 3521 3522 3523 3544 3545 3546 3547 3548
 [533] 3549 3611 3619 3660 3732 3742 3744 3766 3767 3773 3774 3775 3790 3799 3815 3817 3819 3820 3853
 [552] 3869 3883 3884 3893 3895 3912 3913 3914 3915 3916 3917 3920 3941 3942 3943 3944 3945 3946 3947
 [571] 3948 3949 3950 3951 3990 3991 3992 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4032 4033
 [590] 4034 4041 4042 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4099 4111 4116 4120 4121 4122
 [609] 4123 4124 4125 4126 4127 4128 4129 4152 4156 4161 4163 4173 4174 4180 4206 4207 4224 4225 4234
 [628] 4242 4247 4248 4249 4250 4251 4252 4253 4254 4255 4303 4312 4313 4314 4315 4366 4376 4381 4382
 [647] 4383 4384 4389 4391 4393 4422 4423 4424 4458 4459 4486 4487 4488 4567 4571 4585 4586 4591 4592
 [666] 4593 4594 4595 4596 4608 4610 4613 4614 4615 4616 4639 4640 4641 4677 4678 4679 4680 4690 4693
 [685] 4701 4703 4704 4705 4707 4729 4730 4731 4732 4734 4735 4736 4737 4749 4750 4767 4768 4773 4774
 [704] 4775 4776 4777 4778 4779 4780 4781 4782 4783 4785 4786 4787 4788 4848 4849 4850 4851 4852 4853
 [723] 4854 4855 4862 4863 4864 4865 4883 4884 4885 4886 4887 4888 4889 4890 4891 4943 4944 4956 4972
 [742] 4987 4999 5000 5035 5042 5043 5044 5045 5047 5051 5070 5071 5072 5099 5123 5132 5133 5134 5157
 [761] 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5194 5196 5197 5198 5208 5209 5211
 [780] 5212 5213 5214 5253 5254 5258 5279 5280 5292 5293 5298 5300 5301 5302 5303 5304 5305 5307 5308
 [799] 5309 5310 5311 5312 5313 5319 5320 5388 5389 5390 5400 5401 5403 5404 5405 5430 5431 5433 5454
 [818] 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5468 5469 5470 5471 5472 5474 5536 5538 5546
 [837] 5547 5548 5549 5550 5551 5552 5587 5589 5595 5596 5597 5598 5599 5600 5620 5665 5677 5678 5679
 [856] 5713 5718 5719 5720 5721 5762 5763 5784 5815 5873 5884 5885 5917 5954 5955 5956 5957 5958 5959
 [875] 5960 5994 5995 5996 5999 6000 6001 6002 6003 6004 6005 6006 6008 6046 6065 6126 6127 6128 6129
 [894] 6150 6157 6159 6160 6161 6162 6175 6189 6190 6197 6199 6219 6220 6221 6222 6223 6265 6266 6269
 [913] 6319 6358 6359 6362 6376 6435 6437 6439 6440 6453 6454 6455 6482 6483 6484 6485 6486 6487 6509
 [932] 6510 6511 6513 6514 6515 6516 6527 6528 6529 6530 6531 6532 6533 6534 6535 6545 6546 6547 6548
 [951] 6549 6550 6551 6552 6553 6554 6589 6590 6591 6598 6622 6623 6624 6625 6626 6628 6629 6654 6656
 [970] 6657 6662 6663 6664 6665 6667 6668 6669 6670 6671 6672 6673 6674 6677 6679 6680 6710 6711 6726
 [989] 6727 6728 6729 6740 6742 6743 6744 6745 6746 6747 6748 6749
 [ reached getOption("max.print") -- omitted 3439 entries ]
while (i <= length(change.vector)) {
  if(isTRUE(change.vector[i] > 0)){
    endaxis[i] <- RiverFlow[i]
  }
  i <- i+1
}
end <- which(is.na(endaxis)==FALSE)


storm.1.7.13 <- ggplot(hilomodified[begin,],  aes(x = date, y = as.numeric(cms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "lightsteelblue1") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="grey69") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="khaki")

print(storm.1.7.13 + ggtitle("Storm 1/7/13")+labs(x="Time"))


storm.1.7.13 <- ggplot(hilomodified[end,],  aes(x = date, y = as.numeric(cms))) + 
  geom_line(color="black")+
  geom_line(aes(y = as.numeric(saltppt)), color = "lightsteelblue1") +
  geom_line(aes(y = as.numeric(Corr.NTU)), color="grey69") +
  geom_line(aes(y=as.numeric(ChlRFU)),color="khaki")

print(storm.1.7.13 + ggtitle("Storm 1/7/13")+labs(x="Time"))

>>>>>>> Stashed changes
while (i <= length(change.vector)) {
  if(isTRUE(change.vector[i] < 0)){
    startaxis[i] <- RiverFlow[i]
    i <- i+1
  }else{
    if(isTRUE(change.vector[i] > 0)){
      endaxis[i] <- RiverFlow[i]
    }
  }
}
<<<<<<< Updated upstream
LS0tCnRpdGxlOiAiRGF0YSBDbGVhbmluZyAmIERlc2NyaXB0aXZlcyIKYXV0aG9yOiAiQnJpYW5uYSBDaXJpbGxvICYgT2RhbHlzIEJhcnJpZW50b3MiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KIyBNYXRjaGluZyB0aGUgYm91eSBkYXRhIHRvIHRoZSBvdGhlciBkYXRhIGNvbGxlY3RlZCAKYGBge3J9CmhpbG8gPC0gaGJiX3drdV9oX3h0cwpoaWxvIDwtIGRhdGEuZnJhbWUoZGF0ZT1pbmRleChoaWxvKSwgY29yZWRhdGEoaGlsbykpCmhpbG8gPC0gaGlsb1s1Mjk6NTQ4MTYsXQpoaWxvCiMgd2hpY2goaGlsbyRkYXRlPT0iMjAxMC0xMC0yMyAwMDowMDowMCIpID0gaW5kZXggNTI5IAoKIyB3aGljaChoaWxvJGRhdGU9PSIyMDE2LTEyLTMxIDIzOjAwOjAwIikgPSBpbmRleCA1NDgxNgpgYGAKYGBge3J9Cmxlbmd0aChoaWxvWywxXSkgIyB3ZSBhcmUgbGVmdCB3aXRoIDU0Mjg4IGxpbmVzIG9mIGRhdGEKCjU0ODE2IC0gbGVuZ3RoKGhpbG9bLDFdKSAjIHdlIGxvc3QgNTI4IHZhbHVlcyAKYGBgCgojIENoYW5naW5nIGNvbHVtbiBuYW1lcyAKYGBge3J9CiMgcmVtb3ZpbmcgY29sdW1ucyB0aGF0IHdlIGFyZSBub3QgdXNpbmcgCmhpbG8kZGF0ZS4yIDwtIE5VTEwgIyBhbm90aGVyIGRhdGUgY29sdW1uCmhpbG8kZGF0ZS4xIDwtIE5VTEwgIyBhbm90aGVyIGRhdGUgY29sdW1uCmhpbG8kQkdBUkZVIDwtIE5VTEwgIyA/CmhpbG8kRE9tZ0wgPC0gTlVMTCAjIGRpc3NvbHZlZCBveHlnZW4KaGlsbyREb3BlciA8LSBOVUxMICMgZGlzc29sdmVkIG94eWdlbgpoaWxvJFBBUjEgPC0gTlVMTCAjID8KaGlsbyRwSCA8LSBOVUxMICMgcEgKaGlsbyROVFUgPC0gTlVMTCAjIGEgZGlmZmVyZW50IG1lYXN1cmVtZW50IGZvciB0dXJiaXRpdHkKaGlsbyRET3BlcjEwIDwtIE5VTEwgIyBkaXNzb2x2ZWQgb3h5Z2VuCgojIGNvbG5hbWVzKGhpbG8pIDwtIGMoIkRhdGUiLCAiY2ZzIiwgIlJpdmVyRmxvdy1jdW1lYyIsICJMb2dSaXZlckZsb3ctY3VtZWMiLCAiQ2hsb3JvcGh5bGwtUkZVIiwgIlNhbGluaXR5LVBQVCIsICJUZW1wLUMiLCAiY2hsb3JvcGh5bGwtY2FsaWJyYXRvciIsICJUdXJiaWRpdHktTlRVIikKIyBkb2VzIG5vdCB3b3JrID8/PwoKaGlsbwpgYGAKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgRlVMTCBEQVRBIFNFVCAyMDEyLTIwMTYKIyBEZXNjcmlwdGl2ZXM6IFBMb3RzCgojIyBSaXZlciBGbG93IEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJGxvZ2Ntc1t3aGljaChpcy5uYShoaWxvJGxvZ2Ntcyk9PVRSVUUpXSkgIyAxMiBOQXMgCndoaWNoKGlzLm5hKGhpbG8kbG9nY21zKT09VFJVRSkKClJpdmVyRmxvdyA8LSBnZ3Bsb3QoaGlsbywgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiAgZ2VvbV9saW5lKCkKCnByaW50KFJpdmVyRmxvdyArIGdndGl0bGUoIlJpdmVyIEZsb3ciKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQpgYGAKIyMgQ0hMIEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJENobFJGVVt3aGljaChpcy5uYShoaWxvJENobFJGVSk9PVRSVUUpXSkgIyAyMDQ2NCBOQXMKCndoaWNoKGFzLm51bWVyaWMoaGlsbyRDaGxSRlUpPT1tYXgoYXMubnVtZXJpYyhuYS5vbWl0KGhpbG8kQ2hsUkZVKSkpKSAjIDE1LjMgbWF4IAojIENITCB0ZWxscyB1cyB3aGVyZSBpbiB0aGUgZGF0YSBzZXQgdGhpcyBoYXBwZW5lZCAgCmhpbG9bMzg5NzQsXQoKQ0hMIDwtIGdncGxvdChoaWxvLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDaGxSRlUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoQ0hMICsgZ2d0aXRsZSgiQ2hsb3JvcGh5bGwgIikrbGFicyh4PSJUaW1lIiwgeSA9ICJDaGxvcm9waHlsbCAgLSByZWxhdGl2ZSBmbHVvcmVzY2VuY2UgdW5pdHMgKFJGVSkiKSkKYGBgCiMjIFR1cmJpdHkgRlVMTCBEQVRBIFNFVApgYGB7cn0KbGVuZ3RoKGhpbG8kQ29yci5OVFVbd2hpY2goaXMubmEoaGlsbyRDb3JyLk5UVSk9PVRSVUUpXSkgIzE1MDEyIE5BcwoKd2hpY2goYXMubnVtZXJpYyhoaWxvJENvcnIuTlRVKT09bWF4KGFzLm51bWVyaWMobmEub21pdChoaWxvJENvcnIuTlRVKSkpKSAjIDg4LjQKIyB0ZWxscyB1cyB3aGVyZSBpbiB0aGUgZGF0YSBzZXQgdGhpcyBoYXBwZW5lZApoaWxvWzMzMjQzLF0KClRVUkIgPC0gZ2dwbG90KGhpbG8sYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpKSArIAogIGdlb21fbGluZSgpCgpwcmludChUVVJCICsgZ2d0aXRsZSgiVHVyYmlkaXR5ICIpK2xhYnMoeD0iVGltZSIsIHkgPSAiVHVyYmlkaXR5IC0gTmVwaGVsb21ldHJpYyBUdXJiaWRpdHkgVW5pdHMgKE5UVSkiKSkKYGBgCiMjIFNhbGluaXR5IEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJHNhbHRwcHRbd2hpY2goaXMubmEoaGlsbyRzYWx0cHB0KT09VFJVRSldKSAjMTEzMzAgTkFzCgpTQUxUIDwtIGdncGxvdChoaWxvLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSkpICsgCiAgZ2VvbV9saW5lKCkKCnByaW50KFNBTFQgKyBnZ3RpdGxlKCJTYWxpbml0eSIpK2xhYnMoeD0iVGltZSIsIHkgPSAiU2FsaW5pdHkgLSB1bml0IHBhcnRzIHBlciB0aG91c2FuZCAoUFBUKSIpKQpgYGAKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgSGlzdG9ncmFtcyBGVUxMIERBVEEgU0VUCiMjIFJpdmVyIEZsb3cgSGlzdG9ncmFtCmBgYHtyfQpoaXN0KGFzLm51bWVyaWMoaGlsbyRsb2djbXMpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBMb2cgUml2ZXIgRmxvdyIsIHhsYWIgPSAiTG9nIFJpdmVyIEZsb3ciKQoKIyB0aGlzIGxvb2tzIG9rYXkKYGBgCiMjIENITCBIaXN0b2dyYW0KYGBge3J9CiMgVkVSWSBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG8kQ2hsUkZVKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgQ2hsb3JvcGh5bGwiLCB4bGFiID0gIkNobG9yb3BoeWxsICAtIHJlbGF0aXZlIGZsdW9yZXNjZW5jZSB1bml0cyAoUkZVKSIpCgojIHRoaXMgbG9va3MgYmV0dGVyCmhpc3QobG9nKGFzLm51bWVyaWMoaGlsbyRDaGxSRlUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIENobG9yb3BoeWxsIiwgeGxhYiA9ICJDaGxvcm9waHlsbCIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAojIyBUdXJiaXR5IEhpc3RvZ3JhbQpgYGB7cn0KIyBWRVJZIHNrZXdlZApoaXN0KGFzLm51bWVyaWMoaGlsbyRDb3JyLk5UVSksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IC0gTmVwaGVsb21ldHJpYyBUdXJiaWRpdHkgVW5pdHMgKE5UVSkiKQoKIyB0aGlzIGxvb2tzIGJldHRlcgpoaXN0KGxvZyhhcy5udW1lcmljKGhpbG8kQ29yci5OVFUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IikKIyBub3Qgc3VyZSB3aGF0IGhhcHBlbnMgdG8gdW5pdHMgd2hlbiB0YWtpbmcgdGhlIGxvZyAKYGBgCiMjIFNhbGluaXR5IEhpc3RvZ3JhbQpgYGB7cn0KIyBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG8kc2FsdHBwdCksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSAtIHVuaXQgcGFydHMgcGVyIHRob3VzYW5kIChQUFQpIikKCiMgdGhpcyBpcyB3b3JzdCEKaGlzdChsb2coYXMubnVtZXJpYyhoaWxvJHNhbHRwcHQpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgTkVXIERBVEEgU0VULU1vZGlmaWVkIERhdGEgMjAxMy0yMDE1CmBgYHtyfQojIHN0YXJ0IGRhdGU6IDIwMTMtMDEtMDEgMDA6MDA6MDAKIyBlbmQgZGF0ZTogMjAxNS0xMi0zMSAyMzowMDowMApoaWxvbW9kaWZpZWQgPC0gaGlsb1sxOTIyNTo0NTUwNCxdCmxlbmd0aChoaWxvWywxXSktbGVuZ3RoKGhpbG9tb2RpZmllZFssMV0pCiMgbG9zdCAyODAwOCBlbnRyaWVzIG9mIGRhdGEgCgpsZW5ndGgoaGlsb21vZGlmaWVkWywxXSktNTI4ICMgd2UgYXJlIGxlZnQgd2l0aCAyNTc1MiBlbnRyaWVzIG9mIGRhdGEgCgoKaGVhZChoaWxvbW9kaWZpZWQpCnRhaWwoaGlsb21vZGlmaWVkKQoKYGBgCgojIERlc2NyaXB0aXZlcyBvbiBhbGwgdmFyaWFibGVzIE1PRElGSUVEIERBVEEgU0VUOiBVc2luZyBGYXZzdGF0cwojIyBSaXZlciBGbG93IEZhdnN0YXRzCmBgYHtyfQojbGlicmFyeShtb3NhaWMpCmZhdnN0YXRzKGhpbG9tb2RpZmllZCRjbXMpCmBgYAojIyBDSEwgRmF2c3RhdHMKYGBge3J9CmZhdnN0YXRzKGhpbG9tb2RpZmllZCRDaGxSRlUpCmBgYAojIyBUdXJiaXRpdHkgRmF2c3RhdHMKYGBge3J9CmZhdnN0YXRzKGhpbG9tb2RpZmllZCRDb3JyLk5UVSkKYGBgCiMjIFNhbGluaXR5IEZhdnN0YXRzCmBgYHtyfQpmYXZzdGF0cyhoaWxvbW9kaWZpZWQkc2FsdHBwdCkKYGBgCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIE1PRElGSUVEIERBVEEgU0VUIDIwMTMtMjAxNQojIERlc2NyaXB0aXZlczogUGxvdHMKCiMjIFJpdmVyIEZsb3cgTU9ESUZJRUQKYGBge3J9Cmxlbmd0aChoaWxvbW9kaWZpZWQkbG9nY21zW3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRsb2djbXMpPT1UUlVFKV0pICMgTm8gTkFzLCBZQVkhCndoaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRsb2djbXMpPT1UUlVFKQoKUml2ZXJGbG93TW9kIDwtIGdncGxvdChoaWxvbW9kaWZpZWQsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArIAogIGdlb21fbGluZSgpCgpwcmludChSaXZlckZsb3dNb2QgKyBnZ3RpdGxlKCJSaXZlciBGbG93IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCiMjIENITCBNT0RJRklFRApgYGB7cn0Kc3VtKGlzLm5hKGhpbG9tb2RpZmllZCRDaGxSRlUpPT1UUlVFKSAjIDE4ODQgTkFzCiN3aGljaChpcy5uYShoaWxvbW9kaWZpZWQkQ2hsUkZVKT09VFJVRSkKIyBtYXgoYXMubnVtZXJpYyhuYS5vbWl0KGhpbG8kQ2hsUkZVKSkpICMgMTUuMwp3aGljaChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDaGxSRlUpPT0xNS4zKQpoaWxvWzM4OTc0LF0KCkNITE1vZCA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDaGxSRlUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoQ0hMTW9kICsgZ2d0aXRsZSgiQ2hsb3JvcGh5bGwgIikrbGFicyh4PSJUaW1lIiwgeSA9ICJDaGxvcm9waHlsbCAgLSByZWxhdGl2ZSBmbHVvcmVzY2VuY2UgdW5pdHMgKFJGVSkiKSkKYGBgCgoKIyBUdXJiaXRpdHkgTU9ESUZJRUQKYGBge3J9Cmxlbmd0aChoaWxvbW9kaWZpZWQkQ29yci5OVFVbd2hpY2goaXMubmEoaGlsb21vZGlmaWVkJENvcnIuTlRVKT09VFJVRSldKSAjIDI3MDQgTkFzCiMgbWF4KGFzLm51bWVyaWMobmEub21pdChoaWxvJENvcnIuTlRVKSkpICMgODguNAp3aGljaChhcy5udW1lcmljKGhpbG8kQ29yci5OVFUpPT04OC40KQpoaWxvWzMzMjQzLF0KClRVUkJNb2QgPC0gZ2dwbG90KGhpbG9tb2RpZmllZCwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoQ29yci5OVFUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoVFVSQk1vZCArIGdndGl0bGUoIlR1cmJpZGl0eSAiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlR1cmJpZGl0eSAtIE5lcGhlbG9tZXRyaWMgVHVyYmlkaXR5IFVuaXRzIChOVFUpIikpCmBgYAoKIyBTYWxpbml0eSBNT0RJRklFRApgYGB7cn0KbGVuZ3RoKGhpbG9tb2RpZmllZCRzYWx0cHB0W3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRzYWx0cHB0KT09VFJVRSldKSAjIDIyNjcgTkFzCgpTQUxUTW9kIDwtIGdncGxvdChoaWxvbW9kaWZpZWQsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoU0FMVE1vZCArIGdndGl0bGUoIlNhbGluaXR5IikrbGFicyh4PSJUaW1lIiwgeSA9ICJTYWxpbml0eSAtIHVuaXQgcGFydHMgcGVyIHRob3VzYW5kIChQUFQpIikpCmBgYAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBIaXN0b2dyYW1zIE1PRElGSUVEIAoKIyMgUml2ZXIgRmxvdyBNT0RJRklFRApgYGB7cn0KaGlzdChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRsb2djbXMpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBMb2cgUml2ZXIgRmxvdyIsIHhsYWIgPSAiTG9nIFJpdmVyIEZsb3ciKQoKIyB0aGlzIGxvb2tzIG9rYXkKYGBgCiMjIENITCBNT0RJRklFRApgYGB7cn0KIyBWRVJZIHNrZXdlZApoaXN0KGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJENobFJGVSksIG1haW4gPSAiSGlzdG9ncmFtIG9mIENobG9yb3BoeWxsIiwgeGxhYiA9ICJDaGxvcm9waHlsbCAgLSByZWxhdGl2ZSBmbHVvcmVzY2VuY2UgdW5pdHMgKFJGVSkiKQoKIyB0aGlzIGxvb2tzIGJldHRlcgpoaXN0KGxvZyhhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDaGxSRlUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIENobG9yb3BoeWxsIiwgeGxhYiA9ICJDaGxvcm9waHlsbCIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAojIyBUdXJiaXRpdHkgTU9ESUZJRUQKYGBge3J9CiMgVkVSWSBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDb3JyLk5UVSksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IC0gTmVwaGVsb21ldHJpYyBUdXJiaWRpdHkgVW5pdHMgKE5UVSkiKQoKIyB0aGlzIGxvb2tzIGJldHRlcgpoaXN0KGxvZyhhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDb3JyLk5UVSkpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBMb2cgVHVyYmlkaXR5IiwgeGxhYiA9ICJUdXJiaWRpdHkiKQojIG5vdCBzdXJlIHdoYXQgaGFwcGVucyB0byB1bml0cyB3aGVuIHRha2luZyB0aGUgbG9nIApgYGAKIyMgU2FsaW5pdHkgTU9ESUZJRUQKYGBge3J9CiMgc2tld2VkCmhpc3QoYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkc2FsdHBwdCksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSAtIHVuaXQgcGFydHMgcGVyIHRob3VzYW5kIChQUFQpIikKCiMgdGhpcyBpcyB3b3JzdCEKaGlzdChsb2coYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkc2FsdHBwdCkpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBMb2cgU2FsaW5pdHkiLCB4bGFiID0gIlNhbGluaXR5IikKIyBub3Qgc3VyZSB3aGF0IGhhcHBlbnMgdG8gdW5pdHMgd2hlbiB0YWtpbmcgdGhlIGxvZyAKYGBgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgUGxvdCB3aXRoIEFMTCBWYXIgMjAxMy0yMDE1Ckl0IGlzIGhhcmQgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24gCmBgYHtyfQpBbGxZZWFycyA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhsb2djbXMpKSkgKyAKICBnZW9tX2xpbmUoKSsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSwgY29sb3IgPSAiZGFya3JlZCIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJkYXJrZ3JlZW4iKSArCiAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQoKcHJpbnQoQWxsWWVhcnMgKyBnZ3RpdGxlKCJIaWxvIEJheSIpK2xhYnMoeD0iVGltZSIsIHkgPSAiUml2ZXIgRmxvdyAtIGN1YmljIG1ldGVycyBwZXIgc2Vjb25kIikpCgpgYGAKCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIERlc2NyaXB0aXZlcyBieSBTdG9ybQpXZSBhcmUgcGlja2luZyBvbmUgc3Rvcm0gZnJvbSBlYWNoIHllYXIuIFdlIGNhbiBpbmRpY2F0ZSBhIHN0b3JtIGhhcyBvY2N1cnJlZCBieSB0aGUgZXh0cmVtZSBldmVudHMgaW4gdGhlIHJpdmVyIGZsb3cgZGF0YS4gCldlIHdpbGwgbm90IHVzZSB0aGUgbG9nICh3aGljaCBpcyBsb2diYXNlMTApIGluIG9yZGVyIHRvIHNlZSB0aGUgZXh0cmVtZSBldmVudHMKV2hlbiBzYWxpbml0eSBpcyBiZWxvdyAzNSB0aGlzIGFsc28gaW5kaWNhdGVzIGEgc3Rvcm0gaGFzIG9jY3VycmVkLiAKCldlIHdpbGwgYnJlYWsgdGhlIGRhdGEgc2V0IGJ5IHllYXIgdG8gZmluZCB0aGUgbW9zdCBleHRyZW1lIGV2ZW50IGZvciBlYWNoIHllYXIuIApgYGB7cn0KaGlsbzIwMTMgPC0gaGlsb21vZGlmaWVkWzE6ODc2MCxdCgpoaWxvMjAxNCA8LSBoaWxvbW9kaWZpZWRbODc2MToxNzUyMCxdCgpoaWxvMjAxNSA8LSBoaWxvbW9kaWZpZWRbMTc1MjE6bGVuZ3RoKGhpbG9tb2RpZmllZFssMV0pLF0KYGBgCgojIDIwMTMgRGF0YSAmIFBsb3QKYGBge3J9CiMgbWF4KGFzLm51bWVyaWMoaGlsbzIwMTMkbG9nY21zKSkgIyB0aGlzIGlzIGxvZyBiYXNlIDEwIAojIFRoaXMgaXMgTk9UIHRoZSBuYXR1cmFsIGxvZwptYXgoYXMubnVtZXJpYyhoaWxvMjAxMyRjbXMpKSAjIDIwNy4xODYgCndoaWNoKGFzLm51bWVyaWMoaGlsbzIwMTMkY21zKSA9PSBtYXgoYXMubnVtZXJpYyhoaWxvMjAxMyRjbXMpKSkKCmhpbG8yMDEzWzM1NTAsXQojIGFsbCB2YWx1ZXMgZm9yIHRoaXMgc3Rvcm0gYXJlIE5BCgpwbG90MjAxMyA8LSBnZ3Bsb3QoaGlsbzIwMTMsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArIAogIGdlb21fbGluZShjb2xvcj0iYmxhY2siKSsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSwgY29sb3IgPSAiZGFya3JlZCIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJkYXJrZ3JlZW4iKSArCiAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQoKcHJpbnQocGxvdDIwMTMgKyBnZ3RpdGxlKCIyMDEzIikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCgojIyMjIFNwbGl0IDIwMTMgaW50byA2IG1vbnRocyB0byBnZXQgYSBiZXR0ZXIgdmlzdWFsCmBgYHtyfQojIFIyMDEzLjEgPC0gZ2dwbG90KGhpbG8yMDEzWzE6KGxlbmd0aChoaWxvMjAxM1ssMV0pLzIpLF0sICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArIAojICAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwojICAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSksIGNvbG9yID0gImRhcmtyZWQiKSArCiMgICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJkYXJrZ3JlZW4iKSArCiMgICBnZW9tX2xpbmUoYWVzKHk9YXMubnVtZXJpYyhDaGxSRlUpKSxjb2xvcj0iYmx1ZSIpCiMgcHJpbnQoUjIwMTMuMSArIGdndGl0bGUoIlJpdmVyIEZsb3ciKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQojIFIyMDEzLjEreWxpbSgwLDQwKQojIAojIAojIFIyMDEzLjIgPC0gZ2dwbG90KGhpbG8yMDEzWyhsZW5ndGgoaGlsbzIwMTNbLDFdKS8yKTpsZW5ndGgoaGlsbzIwMTNbLDFdKSxdLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhjbXMpKSkgKyAKIyAgIGdlb21fbGluZShjb2xvcj0iYmxhY2siKSsKIyAgIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJkYXJrcmVkIikgKwojICAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZGFya2dyZWVuIikgKwojICAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQojIHByaW50KFIyMDEzLjIgKyBnZ3RpdGxlKCJSaXZlciBGbG93IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKIyBSMjAxMy4yK3lsaW0oMCw0MCkKYGBgCgojIDIwMTQgRGF0YSAmIFBsb3QKYGBge3J9CiMgTWF4IHJpdmVyIGZsb3cgaW4gdGhlIG92ZXJhbGwgZGF0YSBzZXQKbWF4KGFzLm51bWVyaWMoaGlsbzIwMTQkY21zKSkKbWF4KGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJGNtcykpCgp3aGljaChhcy5udW1lcmljKGhpbG8yMDE0JGNtcykgPT0gbWF4KGFzLm51bWVyaWMoaGlsbzIwMTQkY21zKSkpCgpoaWxvMjAxNFs1MjYzLF0KClIyMDE0IDwtIGdncGxvdChoaWxvMjAxNCwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMobG9nY21zKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJkYXJrcmVkIikgKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoQ29yci5OVFUpKSwgY29sb3I9ImRhcmtncmVlbiIpICsKICBnZW9tX2xpbmUoYWVzKHk9YXMubnVtZXJpYyhDaGxSRlUpKSxjb2xvcj0iYmx1ZSIpCgpwcmludChSMjAxNCArIGdndGl0bGUoIjIwMTQiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQpgYGAKCgojIDIwMTUgRGF0YSAmIFBsb3QKYGBge3J9Cm1heChhcy5udW1lcmljKGhpbG8yMDE1JGNtcykpCgp3aGljaChhcy5udW1lcmljKGhpbG8yMDE1JGNtcykgPT0gbWF4KGFzLm51bWVyaWMoaGlsbzIwMTUkY21zKSkpCgpoaWxvMjAxNVs2NDc1LF0KClIyMDE1IDwtIGdncGxvdChoaWxvMjAxNSwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMobG9nY21zKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJkYXJrcmVkIikgKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoQ29yci5OVFUpKSwgY29sb3I9ImRhcmtncmVlbiIpICsKICBnZW9tX2xpbmUoYWVzKHk9YXMubnVtZXJpYyhDaGxSRlUpKSxjb2xvcj0iYmx1ZSIpCgpwcmludChSMjAxNSArIGdndGl0bGUoIjIwMTUiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQpgYGAKCiMgU2VwYXJhdGluZyB0aGUgRGF0YSBieSBTdG9ybSBFdmVudHMKYGBge3J9Cm91dGNvbWVzIDwtIGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJHNhbHRwcHQpPDI1IAppbmRleC5sdDI1IDwtIHdoaWNoKG91dGNvbWVzPT1UUlVFKQoKcG9zcy5zdG9ybXMgPC0gaGlsb21vZGlmaWVkW2luZGV4Lmx0MjUsXQpwb3NzLnN0b3JtcwpgYGAKCmBgYHtyfQpvdXRjb21lcy4zNSA8LSBhcy5udW1lcmljKGhpbG9tb2RpZmllZCRzYWx0cHB0KTwzNSAKaW5kZXgubHQzNSA8LSB3aGljaChvdXRjb21lcz09VFJVRSkKaW5kZXgubHQyNQpwb3NzLnN0b3JtczM1IDwtIGhpbG9tb2RpZmllZFtpbmRleC5sdDI1LF0KcG9zcy5zdG9ybXMzNQoKaGlsb21vZGlmaWVkJGRhdGVbMTZdCmBgYAoKYGBge3J9CnN0b3JtLjEuNy4xMyA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkWzE0NToxNjgsXSwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJsaWdodHN0ZWVsYmx1ZTEiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZ3JleTY5IikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJraGFraSIpCgpwcmludChzdG9ybS4xLjcuMTMgKyBnZ3RpdGxlKCJTdG9ybSAxLzcvMTMiKStsYWJzKHg9IlRpbWUiKSkKYGBgCgojIFRyeWluZyB0byBtYWtlIHRoZSBSYWluZmFsbCBwbG90IGVhc2llciB0byByZWFkCgpgYGB7cn0KUml2ZXJGbG93MSA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkWzE6MTAwLF0sICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArIAogIGdlb21fbGluZSgpCgpwcmludChSaXZlckZsb3cgKyBnZ3RpdGxlKCJSaXZlciBGbG93IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCgoK
=======
LS0tCnRpdGxlOiAiRGF0YSBDbGVhbmluZyAmIERlc2NyaXB0aXZlcyIKYXV0aG9yOiAiQnJpYW5uYSBDaXJpbGxvICYgT2RhbHlzIEJhcnJpZW50b3MiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KIyBNYXRjaGluZyB0aGUgYm91eSBkYXRhIHRvIHRoZSBvdGhlciBkYXRhIGNvbGxlY3RlZCAKYGBge3J9CmhpbG8gPC0gaGJiX3drdV9oX3h0cwpoaWxvIDwtIGRhdGEuZnJhbWUoZGF0ZT1pbmRleChoaWxvKSwgY29yZWRhdGEoaGlsbykpCmhpbG8gPC0gaGlsb1s1Mjk6NTQ4MTYsXQpoaWxvCiMgd2hpY2goaGlsbyRkYXRlPT0iMjAxMC0xMC0yMyAwMDowMDowMCIpID0gaW5kZXggNTI5IAoKIyB3aGljaChoaWxvJGRhdGU9PSIyMDE2LTEyLTMxIDIzOjAwOjAwIikgPSBpbmRleCA1NDgxNgpgYGAKYGBge3J9Cmxlbmd0aChoaWxvWywxXSkgIyB3ZSBhcmUgbGVmdCB3aXRoIDU0Mjg4IGxpbmVzIG9mIGRhdGEKCjU0ODE2IC0gbGVuZ3RoKGhpbG9bLDFdKSAjIHdlIGxvc3QgNTI4IHZhbHVlcyAKYGBgCgojIENoYW5naW5nIGNvbHVtbiBuYW1lcyAKYGBge3J9CiMgcmVtb3ZpbmcgY29sdW1ucyB0aGF0IHdlIGFyZSBub3QgdXNpbmcgCmhpbG8kZGF0ZS4yIDwtIE5VTEwgIyBhbm90aGVyIGRhdGUgY29sdW1uCmhpbG8kZGF0ZS4xIDwtIE5VTEwgIyBhbm90aGVyIGRhdGUgY29sdW1uCmhpbG8kQkdBUkZVIDwtIE5VTEwgIyA/CmhpbG8kY2ZzIDwtIE5VTEwKaGlsbyRET21nTCA8LSBOVUxMICMgZGlzc29sdmVkIG94eWdlbgojaGlsbyREb3BlciA8LSBOVUxMICMgZGlzc29sdmVkIG94eWdlbgpoaWxvJFBBUjEgPC0gTlVMTCAjID8KaGlsbyRwSCA8LSBOVUxMICMgcEgKaGlsbyROVFUgPC0gTlVMTCAjIGEgZGlmZmVyZW50IG1lYXN1cmVtZW50IGZvciB0dXJiaXRpdHkKaGlsbyRET3BlcjEwIDwtIE5VTEwgIyBkaXNzb2x2ZWQgb3h5Z2VuCgojIGNvbG5hbWVzKGhpbG8pIDwtIGMoIkRhdGUiLCAiY2ZzIiwgIlJpdmVyRmxvdy1jdW1lYyIsICJMb2dSaXZlckZsb3ctY3VtZWMiLCAiQ2hsb3JvcGh5bGwtUkZVIiwgIlNhbGluaXR5LVBQVCIsICJUZW1wLUMiLCAiY2hsb3JvcGh5bGwtY2FsaWJyYXRvciIsICJUdXJiaWRpdHktTlRVIikKIyBkb2VzIG5vdCB3b3JrID8/PwoKaGlsbwpgYGAKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgRlVMTCBEQVRBIFNFVCAyMDEyLTIwMTYKIyBEZXNjcmlwdGl2ZXM6IFBMb3RzCgojIyBSaXZlciBGbG93IEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJGxvZ2Ntc1t3aGljaChpcy5uYShoaWxvJGxvZ2Ntcyk9PVRSVUUpXSkgIyAxMiBOQXMgCndoaWNoKGlzLm5hKGhpbG8kbG9nY21zKT09VFJVRSkKClJpdmVyRmxvdyA8LSBnZ3Bsb3QoaGlsbywgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiAgZ2VvbV9saW5lKCkKCnByaW50KFJpdmVyRmxvdyArIGdndGl0bGUoIlJpdmVyIEZsb3ciKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQpgYGAKIyMgQ0hMIEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJENobFJGVVt3aGljaChpcy5uYShoaWxvJENobFJGVSk9PVRSVUUpXSkgIyAyMDQ2NCBOQXMKCndoaWNoKGFzLm51bWVyaWMoaGlsbyRDaGxSRlUpPT1tYXgoYXMubnVtZXJpYyhuYS5vbWl0KGhpbG8kQ2hsUkZVKSkpKSAjIDE1LjMgbWF4IAojIENITCB0ZWxscyB1cyB3aGVyZSBpbiB0aGUgZGF0YSBzZXQgdGhpcyBoYXBwZW5lZCAgCmhpbG9bMzg5NzQsXQoKQ0hMIDwtIGdncGxvdChoaWxvLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDaGxSRlUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoQ0hMICsgZ2d0aXRsZSgiQ2hsb3JvcGh5bGwgIikrbGFicyh4PSJUaW1lIiwgeSA9ICJDaGxvcm9waHlsbCAgLSByZWxhdGl2ZSBmbHVvcmVzY2VuY2UgdW5pdHMgKFJGVSkiKSkKYGBgCiMjIFR1cmJpdHkgRlVMTCBEQVRBIFNFVApgYGB7cn0KbGVuZ3RoKGhpbG8kQ29yci5OVFVbd2hpY2goaXMubmEoaGlsbyRDb3JyLk5UVSk9PVRSVUUpXSkgIzE1MDEyIE5BcwoKd2hpY2goYXMubnVtZXJpYyhoaWxvJENvcnIuTlRVKT09bWF4KGFzLm51bWVyaWMobmEub21pdChoaWxvJENvcnIuTlRVKSkpKSAjIDg4LjQKIyB0ZWxscyB1cyB3aGVyZSBpbiB0aGUgZGF0YSBzZXQgdGhpcyBoYXBwZW5lZApoaWxvWzMzMjQzLF0KClRVUkIgPC0gZ2dwbG90KGhpbG8sYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpKSArIAogIGdlb21fbGluZSgpCgpwcmludChUVVJCICsgZ2d0aXRsZSgiVHVyYmlkaXR5ICIpK2xhYnMoeD0iVGltZSIsIHkgPSAiVHVyYmlkaXR5IC0gTmVwaGVsb21ldHJpYyBUdXJiaWRpdHkgVW5pdHMgKE5UVSkiKSkKYGBgCiMjIFNhbGluaXR5IEZVTEwgREFUQSBTRVQKYGBge3J9Cmxlbmd0aChoaWxvJHNhbHRwcHRbd2hpY2goaXMubmEoaGlsbyRzYWx0cHB0KT09VFJVRSldKSAjMTEzMzAgTkFzCgpTQUxUIDwtIGdncGxvdChoaWxvLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSkpICsgCiAgZ2VvbV9saW5lKCkKCnByaW50KFNBTFQgKyBnZ3RpdGxlKCJTYWxpbml0eSIpK2xhYnMoeD0iVGltZSIsIHkgPSAiU2FsaW5pdHkgLSB1bml0IHBhcnRzIHBlciB0aG91c2FuZCAoUFBUKSIpKQpgYGAKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgSGlzdG9ncmFtcyBGVUxMIERBVEEgU0VUCiMjIFJpdmVyIEZsb3cgSGlzdG9ncmFtCmBgYHtyfQpoaXN0KGFzLm51bWVyaWMoaGlsbyRsb2djbXMpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBMb2cgUml2ZXIgRmxvdyIsIHhsYWIgPSAiTG9nIFJpdmVyIEZsb3ciKQoKIyB0aGlzIGxvb2tzIG9rYXkKYGBgCiMjIENITCBIaXN0b2dyYW0KYGBge3J9CiMgVkVSWSBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG8kQ2hsUkZVKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgQ2hsb3JvcGh5bGwiLCB4bGFiID0gIkNobG9yb3BoeWxsICAtIHJlbGF0aXZlIGZsdW9yZXNjZW5jZSB1bml0cyAoUkZVKSIpCgojIHRoaXMgbG9va3MgYmV0dGVyCmhpc3QobG9nKGFzLm51bWVyaWMoaGlsbyRDaGxSRlUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIENobG9yb3BoeWxsIiwgeGxhYiA9ICJDaGxvcm9waHlsbCIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAojIyBUdXJiaXR5IEhpc3RvZ3JhbQpgYGB7cn0KIyBWRVJZIHNrZXdlZApoaXN0KGFzLm51bWVyaWMoaGlsbyRDb3JyLk5UVSksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IC0gTmVwaGVsb21ldHJpYyBUdXJiaWRpdHkgVW5pdHMgKE5UVSkiKQoKIyB0aGlzIGxvb2tzIGJldHRlcgpoaXN0KGxvZyhhcy5udW1lcmljKGhpbG8kQ29yci5OVFUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IikKIyBub3Qgc3VyZSB3aGF0IGhhcHBlbnMgdG8gdW5pdHMgd2hlbiB0YWtpbmcgdGhlIGxvZyAKYGBgCiMjIFNhbGluaXR5IEhpc3RvZ3JhbQpgYGB7cn0KIyBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG8kc2FsdHBwdCksIG1haW4gPSAiSGlzdG9ncmFtIG9mIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSAtIHVuaXQgcGFydHMgcGVyIHRob3VzYW5kIChQUFQpIikKCiMgdGhpcyBpcyB3b3JzdCEKaGlzdChsb2coYXMubnVtZXJpYyhoaWxvJHNhbHRwcHQpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgTkVXIERBVEEgU0VULU1vZGlmaWVkIERhdGEgMjAxMy0yMDE1CmBgYHtyfQojIHN0YXJ0IGRhdGU6IDIwMTMtMDEtMDEgMDA6MDA6MDAKIyBlbmQgZGF0ZTogMjAxNS0xMi0zMSAyMzowMDowMApoaWxvbW9kaWZpZWQgPC0gaGlsb1sxOTIyNTo0NTUwNCxdCmxlbmd0aChoaWxvWywxXSktbGVuZ3RoKGhpbG9tb2RpZmllZFssMV0pCiMgbG9zdCAyODAwOCBlbnRyaWVzIG9mIGRhdGEgCgpsZW5ndGgoaGlsb21vZGlmaWVkWywxXSktNTI4ICMgd2UgYXJlIGxlZnQgd2l0aCAyNTc1MiBlbnRyaWVzIG9mIGRhdGEgCgoKaGVhZChoaWxvbW9kaWZpZWQpCnRhaWwoaGlsb21vZGlmaWVkKQoKYGBgCgojIERlc2NyaXB0aXZlcyBvbiBhbGwgdmFyaWFibGVzIE1PRElGSUVEIERBVEEgU0VUOiBVc2luZyBGYXZzdGF0cwojIyBSaXZlciBGbG93IEZhdnN0YXRzCmBgYHtyfQpsaWJyYXJ5KG1vc2FpYykKZmF2c3RhdHMoaGlsb21vZGlmaWVkJGNtcykKYGBgCiMjIENITCBGYXZzdGF0cwpgYGB7cn0KZmF2c3RhdHMoaGlsb21vZGlmaWVkJENobFJGVSkKYGBgCiMjIFR1cmJpdGl0eSBGYXZzdGF0cwpgYGB7cn0KZmF2c3RhdHMoaGlsb21vZGlmaWVkJENvcnIuTlRVKQpgYGAKIyMgU2FsaW5pdHkgRmF2c3RhdHMKYGBge3J9CmZhdnN0YXRzKGhpbG9tb2RpZmllZCRzYWx0cHB0KQpmYXZzdGF0cyhoaWxvbW9kaWZpZWQkVGVtcEMpCmZhdnN0YXRzKGhpbG9tb2RpZmllZCREb3BlcikKYGBgCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIE1PRElGSUVEIERBVEEgU0VUIDIwMTMtMjAxNQojIERlc2NyaXB0aXZlczogUGxvdHMKCiMjIFJpdmVyIEZsb3cgTU9ESUZJRUQKYGBge3J9Cmxlbmd0aChoaWxvbW9kaWZpZWQkbG9nY21zW3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRsb2djbXMpPT1UUlVFKV0pICMgTm8gTkFzLCBZQVkhCndoaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRsb2djbXMpPT1UUlVFKQoKUml2ZXJGbG93TW9kIDwtIGdncGxvdChoaWxvbW9kaWZpZWQsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArIAogIGdlb21fbGluZSgpCgpwcmludChSaXZlckZsb3dNb2QgKyBnZ3RpdGxlKCJSaXZlciBGbG93IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCiMjIENITCBNT0RJRklFRApgYGB7cn0Kc3VtKGlzLm5hKGhpbG9tb2RpZmllZCRDaGxSRlUpPT1UUlVFKSAjIDE4ODQgTkFzCiN3aGljaChpcy5uYShoaWxvbW9kaWZpZWQkQ2hsUkZVKT09VFJVRSkKIyBtYXgoYXMubnVtZXJpYyhuYS5vbWl0KGhpbG8kQ2hsUkZVKSkpICMgMTUuMwp3aGljaChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDaGxSRlUpPT0xNS4zKQpoaWxvWzM4OTc0LF0KCkNITE1vZCA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhDaGxSRlUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoQ0hMTW9kICsgZ2d0aXRsZSgiQ2hsb3JvcGh5bGwgIikrbGFicyh4PSJUaW1lIiwgeSA9ICJDaGxvcm9waHlsbCAgLSByZWxhdGl2ZSBmbHVvcmVzY2VuY2UgdW5pdHMgKFJGVSkiKSkKYGBgCgoKIyBUdXJiaXRpdHkgTU9ESUZJRUQKYGBge3J9Cmxlbmd0aChoaWxvbW9kaWZpZWQkQ29yci5OVFVbd2hpY2goaXMubmEoaGlsb21vZGlmaWVkJENvcnIuTlRVKT09VFJVRSldKSAjIDI3MDQgTkFzCiMgbWF4KGFzLm51bWVyaWMobmEub21pdChoaWxvJENvcnIuTlRVKSkpICMgODguNAp3aGljaChhcy5udW1lcmljKGhpbG8kQ29yci5OVFUpPT04OC40KQpoaWxvWzMzMjQzLF0KClRVUkJNb2QgPC0gZ2dwbG90KGhpbG9tb2RpZmllZCwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoQ29yci5OVFUpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoVFVSQk1vZCArIGdndGl0bGUoIlR1cmJpZGl0eSAiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlR1cmJpZGl0eSAtIE5lcGhlbG9tZXRyaWMgVHVyYmlkaXR5IFVuaXRzIChOVFUpIikpCmBgYAoKIyBTYWxpbml0eSBNT0RJRklFRApgYGB7cn0KbGVuZ3RoKGhpbG9tb2RpZmllZCRzYWx0cHB0W3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRzYWx0cHB0KT09VFJVRSldKSAjIDIyNjcgTkFzCgpTQUxUTW9kIDwtIGdncGxvdChoaWxvbW9kaWZpZWQsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSkgKyAKICBnZW9tX2xpbmUoKQoKcHJpbnQoU0FMVE1vZCArIGdndGl0bGUoIlNhbGluaXR5IikrbGFicyh4PSJUaW1lIiwgeSA9ICJTYWxpbml0eSAtIHVuaXQgcGFydHMgcGVyIHRob3VzYW5kIChQUFQpIikpCmBgYAojIFRlbXB1cmF0dXJlIE1PRElGSUVECmBgYHtyfQpsZW5ndGgoaGlsb21vZGlmaWVkJFRlbXBDW3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCRUZW1wQyk9PVRSVUUpXSkgIyAyMjY3IE5BcwoKVGVtcE1vZCA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhUZW1wQykpKSArIAogIGdlb21fbGluZSgpCgpwcmludChUZW1wTW9kICsgZ2d0aXRsZSgiVGVtcGVyYXR1cmUiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlRlbXBlcmF0dXJlIC0gQ2Vsc2l1cyIpKQpgYGAKIyBEaXNzb2x2ZWQgT3h5Z2VuIE1PRElGSUVECmBgYHtyfQpsZW5ndGgoaGlsb21vZGlmaWVkJERvcGVyW3doaWNoKGlzLm5hKGhpbG9tb2RpZmllZCREb3Blcik9PVRSVUUpXSkgIyAyMjY3IE5BcwoKVGVtcE1vZCA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhEb3BlcikpKSArIAogIGdlb21fbGluZSgpCgpwcmludChUZW1wTW9kICsgZ2d0aXRsZSgiRGlzc29sdmVkIE94eWdlbiIpK2xhYnMoeD0iVGltZSIsIHkgPSAiRGlzc29sdmVkIE94eWdlbiBpbiBwZXJjZW50IG9mIHNhdHVyYXRpb24iKSkKYGBgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIEhpc3RvZ3JhbXMgTU9ESUZJRUQgCgojIyBSaXZlciBGbG93IE1PRElGSUVECmBgYHtyfQpoaXN0KGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJGNtcyksIG1haW4gPSAiSGlzdG9ncmFtIG9mIExvZyBSaXZlciBGbG93IiwgeGxhYiA9ICJMb2cgUml2ZXIgRmxvdyIsIGJyZWFrcyA9NTAsIHhsaW0gPSBjKDAsMjAwKSkKCiMgdGhpcyBsb29rcyBva2F5CmBgYAojIyBDSEwgTU9ESUZJRUQKYGBge3J9CiMgVkVSWSBza2V3ZWQKaGlzdChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRDaGxSRlUpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBDaGxvcm9waHlsbCIsIHhsYWIgPSAiQ2hsb3JvcGh5bGwgIC0gcmVsYXRpdmUgZmx1b3Jlc2NlbmNlIHVuaXRzIChSRlUpIikKCiMgdGhpcyBsb29rcyBiZXR0ZXIKaGlzdChsb2coYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkQ2hsUkZVKSksIG1haW4gPSAiSGlzdG9ncmFtIG9mIExvZyBDaGxvcm9waHlsbCIsIHhsYWIgPSAiQ2hsb3JvcGh5bGwiKQojIG5vdCBzdXJlIHdoYXQgaGFwcGVucyB0byB1bml0cyB3aGVuIHRha2luZyB0aGUgbG9nIApgYGAKIyMgVHVyYml0aXR5IE1PRElGSUVECmBgYHtyfQojIFZFUlkgc2tld2VkCmhpc3QoYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkQ29yci5OVFUpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBUdXJiaWRpdHkiLCB4bGFiID0gIlR1cmJpZGl0eSAtIE5lcGhlbG9tZXRyaWMgVHVyYmlkaXR5IFVuaXRzIChOVFUpIikKCiMgdGhpcyBsb29rcyBiZXR0ZXIKaGlzdChsb2coYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkQ29yci5OVFUpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFR1cmJpZGl0eSIsIHhsYWIgPSAiVHVyYmlkaXR5IikKIyBub3Qgc3VyZSB3aGF0IGhhcHBlbnMgdG8gdW5pdHMgd2hlbiB0YWtpbmcgdGhlIGxvZyAKYGBgCiMjIFNhbGluaXR5IE1PRElGSUVECmBgYHtyfQojIHNrZXdlZApoaXN0KGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJHNhbHRwcHQpLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBTYWxpbml0eSIsIHhsYWIgPSAiU2FsaW5pdHkgLSB1bml0IHBhcnRzIHBlciB0aG91c2FuZCAoUFBUKSIpCgojIHRoaXMgaXMgd29yc3QhCmhpc3QobG9nKGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJHNhbHRwcHQpKSwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTG9nIFNhbGluaXR5IiwgeGxhYiA9ICJTYWxpbml0eSIpCiMgbm90IHN1cmUgd2hhdCBoYXBwZW5zIHRvIHVuaXRzIHdoZW4gdGFraW5nIHRoZSBsb2cgCmBgYAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojIFBsb3Qgd2l0aCBBTEwgVmFyIDIwMTMtMjAxNQpJdCBpcyBoYXJkIHRvIHNlZSB3aGF0IGlzIGdvaW5nIG9uIApgYGB7cn0KQWxsWWVhcnMgPC0gZ2dwbG90KGhpbG9tb2RpZmllZCwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMobG9nY21zKSkpICsgCiAgZ2VvbV9saW5lKCkrCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSksIGNvbG9yID0gImRhcmtyZWQiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZGFya2dyZWVuIikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJibHVlIikKCnByaW50KEFsbFllYXJzICsgZ2d0aXRsZSgiSGlsbyBCYXkiKStsYWJzKHg9IlRpbWUiLCB5ID0gIlJpdmVyIEZsb3cgLSBjdWJpYyBtZXRlcnMgcGVyIHNlY29uZCIpKQoKYGBgCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBEZXNjcmlwdGl2ZXMgYnkgU3Rvcm0KV2UgYXJlIHBpY2tpbmcgb25lIHN0b3JtIGZyb20gZWFjaCB5ZWFyLiBXZSBjYW4gaW5kaWNhdGUgYSBzdG9ybSBoYXMgb2NjdXJyZWQgYnkgdGhlIGV4dHJlbWUgZXZlbnRzIGluIHRoZSByaXZlciBmbG93IGRhdGEuIApXZSB3aWxsIG5vdCB1c2UgdGhlIGxvZyAod2hpY2ggaXMgbG9nYmFzZTEwKSBpbiBvcmRlciB0byBzZWUgdGhlIGV4dHJlbWUgZXZlbnRzCldoZW4gc2FsaW5pdHkgaXMgYmVsb3cgMzUgdGhpcyBhbHNvIGluZGljYXRlcyBhIHN0b3JtIGhhcyBvY2N1cnJlZC4gCgpXZSB3aWxsIGJyZWFrIHRoZSBkYXRhIHNldCBieSB5ZWFyIHRvIGZpbmQgdGhlIG1vc3QgZXh0cmVtZSBldmVudCBmb3IgZWFjaCB5ZWFyLiAKYGBge3J9CmhpbG8yMDEzIDwtIGhpbG9tb2RpZmllZFsxOjg3NjAsXQoKaGlsbzIwMTQgPC0gaGlsb21vZGlmaWVkWzg3NjE6MTc1MjAsXQoKaGlsbzIwMTUgPC0gaGlsb21vZGlmaWVkWzE3NTIxOmxlbmd0aChoaWxvbW9kaWZpZWRbLDFdKSxdCmBgYAoKIyAyMDEzIERhdGEgJiBQbG90CmBgYHtyfQojIG1heChhcy5udW1lcmljKGhpbG8yMDEzJGxvZ2NtcykpICMgdGhpcyBpcyBsb2cgYmFzZSAxMCAKIyBUaGlzIGlzIE5PVCB0aGUgbmF0dXJhbCBsb2cKbWF4KGFzLm51bWVyaWMoaGlsbzIwMTMkY21zKSkgIyAyMDcuMTg2IAp3aGljaChhcy5udW1lcmljKGhpbG8yMDEzJGNtcykgPT0gbWF4KGFzLm51bWVyaWMoaGlsbzIwMTMkY21zKSkpCgpoaWxvMjAxM1szNTUwLF0KIyBhbGwgdmFsdWVzIGZvciB0aGlzIHN0b3JtIGFyZSBOQQoKcGxvdDIwMTMgPC0gZ2dwbG90KGhpbG8yMDEzLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhjbXMpKSkgKyAKICBnZW9tX2xpbmUoY29sb3I9ImJsYWNrIikrCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSksIGNvbG9yID0gImRhcmtyZWQiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZGFya2dyZWVuIikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJibHVlIikKCnByaW50KHBsb3QyMDEzICsgZ2d0aXRsZSgiMjAxMyIpK2xhYnMoeD0iVGltZSIsIHkgPSAiUml2ZXIgRmxvdyAtIGN1YmljIG1ldGVycyBwZXIgc2Vjb25kIikpCmBgYAoKIyMjIyBTcGxpdCAyMDEzIGludG8gNiBtb250aHMgdG8gZ2V0IGEgYmV0dGVyIHZpc3VhbApgYGB7cn0KIyBSMjAxMy4xIDwtIGdncGxvdChoaWxvMjAxM1sxOihsZW5ndGgoaGlsbzIwMTNbLDFdKS8yKSxdLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhjbXMpKSkgKyAKIyAgIGdlb21fbGluZShjb2xvcj0iYmxhY2siKSsKIyAgIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJkYXJrcmVkIikgKwojICAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZGFya2dyZWVuIikgKwojICAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQojIHByaW50KFIyMDEzLjEgKyBnZ3RpdGxlKCJSaXZlciBGbG93IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKIyBSMjAxMy4xK3lsaW0oMCw0MCkKIyAKIyAKIyBSMjAxMy4yIDwtIGdncGxvdChoaWxvMjAxM1sobGVuZ3RoKGhpbG8yMDEzWywxXSkvMik6bGVuZ3RoKGhpbG8yMDEzWywxXSksXSwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiMgICBnZW9tX2xpbmUoY29sb3I9ImJsYWNrIikrCiMgICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSwgY29sb3IgPSAiZGFya3JlZCIpICsKIyAgIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoQ29yci5OVFUpKSwgY29sb3I9ImRhcmtncmVlbiIpICsKIyAgIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJibHVlIikKIyBwcmludChSMjAxMy4yICsgZ2d0aXRsZSgiUml2ZXIgRmxvdyIpK2xhYnMoeD0iVGltZSIsIHkgPSAiUml2ZXIgRmxvdyAtIGN1YmljIG1ldGVycyBwZXIgc2Vjb25kIikpCiMgUjIwMTMuMit5bGltKDAsNDApCmBgYAoKIyAyMDE0IERhdGEgJiBQbG90CmBgYHtyfQojIE1heCByaXZlciBmbG93IGluIHRoZSBvdmVyYWxsIGRhdGEgc2V0Cm1heChhcy5udW1lcmljKGhpbG8yMDE0JGNtcykpCm1heChhcy5udW1lcmljKGhpbG9tb2RpZmllZCRjbXMpKQoKd2hpY2goYXMubnVtZXJpYyhoaWxvMjAxNCRjbXMpID09IG1heChhcy5udW1lcmljKGhpbG8yMDE0JGNtcykpKQoKaGlsbzIwMTRbNTI2MyxdCgpSMjAxNCA8LSBnZ3Bsb3QoaGlsbzIwMTQsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGxvZ2NtcykpKSArIAogIGdlb21fbGluZShjb2xvcj0iYmxhY2siKSsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSwgY29sb3IgPSAiZGFya3JlZCIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJkYXJrZ3JlZW4iKSArCiAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQoKcHJpbnQoUjIwMTQgKyBnZ3RpdGxlKCIyMDE0IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCgoKIyAyMDE1IERhdGEgJiBQbG90CmBgYHtyfQptYXgoYXMubnVtZXJpYyhoaWxvMjAxNSRjbXMpKQoKd2hpY2goYXMubnVtZXJpYyhoaWxvMjAxNSRjbXMpID09IG1heChhcy5udW1lcmljKGhpbG8yMDE1JGNtcykpKQoKaGlsbzIwMTVbNjQ3NSxdCgpSMjAxNSA8LSBnZ3Bsb3QoaGlsbzIwMTUsICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGxvZ2NtcykpKSArIAogIGdlb21fbGluZShjb2xvcj0iYmxhY2siKSsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKHNhbHRwcHQpKSwgY29sb3IgPSAiZGFya3JlZCIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJkYXJrZ3JlZW4iKSArCiAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImJsdWUiKQoKcHJpbnQoUjIwMTUgKyBnZ3RpdGxlKCIyMDE1IikrbGFicyh4PSJUaW1lIiwgeSA9ICJSaXZlciBGbG93IC0gY3ViaWMgbWV0ZXJzIHBlciBzZWNvbmQiKSkKYGBgCiMgU2VwYXJhdGluZyB0aGUgRGF0YSBieSBTdG9ybQpgYGB7cn0Kb3V0Y29tZXMgPC0gYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkc2FsdHBwdCk8MjUgCmluZGV4Lmx0MjUgPC0gd2hpY2gob3V0Y29tZXM9PVRSVUUpCgpwb3NzLnN0b3JtcyA8LSBoaWxvbW9kaWZpZWRbaW5kZXgubHQyNSxdCnBvc3Muc3Rvcm1zCmBgYAoKCmBgYHtyfQpvdXRjb21lcy4zNSA8LSBhcy5udW1lcmljKGhpbG9tb2RpZmllZCRzYWx0cHB0KTwzNSAKaW5kZXgubHQzNSA8LSB3aGljaChvdXRjb21lcz09VFJVRSkKaW5kZXgubHQyNQpwb3NzLnN0b3JtczM1IDwtIGhpbG9tb2RpZmllZFtpbmRleC5sdDI1LF0KcG9zcy5zdG9ybXMzNQoKaGlsb21vZGlmaWVkJGRhdGVbMTZdCmBgYAoKYGBge3J9CnN0b3JtLjEuNy4xMyA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkWzE0NToxNjgsXSwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJsaWdodHN0ZWVsYmx1ZTEiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZ3JleTY5IikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJraGFraSIpCgpwcmludChzdG9ybS4xLjcuMTMgKyBnZ3RpdGxlKCJTdG9ybSAxLzcvMTMiKStsYWJzKHg9IlRpbWUiKSkKYGBgCgoKCmBgYHtyfQpnZXR3ZCgpCiMgd3JpdGUuY3N2KGhpbG9tb2RpZmllZCxmaWxlPSJIaWxvQmF5TkVXMTN0bzE1LmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQoKYGBgCgpgYGB7cn0KQ2hhbmdlUkYgPC0gZnVuY3Rpb24oeCA9IHZlY3RvcigpKXsKY2hhbmdlIDwtIGMoMCkKICBmb3IoaSBpbiAxOihsZW5ndGgoeCktMSkpewogICAgY2hhbmdlW2krMV0gPC0geFtpXS14W2krMV0KICB9CiAgcmV0dXJuKGNoYW5nZSkKfQpjaGFuZ2UudmVjdG9yIDwtIGMoQ2hhbmdlUkYoYXMubnVtZXJpYyhoaWxvbW9kaWZpZWQkY21zKSkpCmNoYW5nZS52ZWN0b3IKbGVuZ3RoKENoYW5nZVJGKGFzLm51bWVyaWMoaGlsb21vZGlmaWVkJGNtcykpKQpsZW5ndGgoaGlsb21vZGlmaWVkJGNtcykgIyBzYW1lIGxlbmd0aAoKaGlsb21vZGlmaWVkJGNoYW5nZUNNUyA8LSBjaGFuZ2UudmVjdG9yCgpoZWFkKGhpbG9tb2RpZmllZCkKYGBgCgpgYGB7cn0KIyAxMC0xMSBuZWdhdGl2ZSBzdGFydCBvZiBzdG9ybQojIDExLTEwIHBvc2l0aXZlIGVuZCBvZiBzdG9ybQoKcG9zaXRpdmUuY2hhbmdlIDwtIHZlY3RvcigpCm5lZ2F0aXZlLmNoYW5nZSA8LSB2ZWN0b3IoKQppbmRleCA8LSB2ZWN0b3IoKQoKCmZvcihpIGluIDE6bGVuZ3RoKGhpbG9tb2RpZmllZCRjbXMpKXsKICBpZiAoaGlsb21vZGlmaWVkJGNoYW5nZUNNU1tpXSA8IDAgKXsKICAgIHBvc2l0aXZlLmNoYW5nZVtpXSA8LSBpCiAgfWVsc2V7CiAgICBpZihoaWxvbW9kaWZpZWQkY2hhbmdlQ01TW2ldID4gMCl7CiAgICAgIG5lZ2F0aXZlLmNoYW5nZVtpXSA8LSBpCiAgICB9CiAgfQogIGlmKGhpbG9tb2RpZmllZCRjbXNbaV0gPj0gMTAgKXsKICAgIGluZGV4W2ldIDwtIGkKICB9Cn0KaW5kZXgKcG9zaXRpdmUuY2hhbmdlCm5lZ2F0aXZlLmNoYW5nZQpsZW5ndGgod2hpY2goaW5kZXggPiAwKSkgCgpzdG9ybXMgPC0gc29ydChjKHBvc2l0aXZlLmNoYW5nZSxuZWdhdGl2ZS5jaGFuZ2UpLCBkZWNyZWFzaW5nID0gRkFMU0UpCnN0b3JtcwpgYGAKCmBgYHtyfQoKdmVjdG9yIDwtIHZlY3RvcigpCmZvcihpIGluIDE6bGVuZ3RoKHN0b3JtcykpewogIGlmKGlzVFJVRShhYnMoc3Rvcm1zW2ldLXN0b3Jtc1tpKzFdKSA+IDEwKSl7CiAgICBzdG9wIDwtIHN0b3Jtc1tpXQogIH1lbHNlewogICAgc3RvcCA8LSAwCiAgfQogIGlmKHN0b3AgPiAwKXsKICAgIHZlY3RvcltpXSA8LSBzdG9wCiAgfQp9CnZlY3Rvclt3aGljaChpcy5uYSh2ZWN0b3IpPT1GQUxTRSldCgpzdG9ybS4xLjcuMTMgPC0gZ2dwbG90KGhpbG9tb2RpZmllZFsxOjgwLF0sICBhZXMoeCA9IGRhdGUsIHkgPSBhcy5udW1lcmljKGNtcykpKSArCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJsaWdodHN0ZWVsYmx1ZTEiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZ3JleTY5IikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJraGFraSIpCgpwcmludChzdG9ybS4xLjcuMTMgKyBnZ3RpdGxlKCJTdG9ybSAxLzcvMTMiKStsYWJzKHg9IlRpbWUiKSkKYGBgCgpgYGB7cn0Kc3RhcnRheGlzIDwtIHZlY3RvcigpCmVuZGF4aXMgPC0gdmVjdG9yKCkKaSA8LSAxCndoaWxlIChpIDw9IGxlbmd0aChjaGFuZ2UudmVjdG9yKSkgewogIGlmKGlzVFJVRShjaGFuZ2UudmVjdG9yW2ldIDwgMCkpewogICAgc3RhcnRheGlzW2ldIDwtIFJpdmVyRmxvd1tpXQogIH0KICBpIDwtIGkrMQp9CmJlZ2luPC13aGljaChpcy5uYShzdGFydGF4aXMpID09IEZBTFNFKQpiZWdpbgoKd2hpbGUgKGkgPD0gbGVuZ3RoKGNoYW5nZS52ZWN0b3IpKSB7CiAgaWYoaXNUUlVFKGNoYW5nZS52ZWN0b3JbaV0gPiAwKSl7CiAgICBlbmRheGlzW2ldIDwtIFJpdmVyRmxvd1tpXQogIH0KICBpIDwtIGkrMQp9CmVuZCA8LSB3aGljaChpcy5uYShlbmRheGlzKT09RkFMU0UpCgoKc3Rvcm0uMS43LjEzIDwtIGdncGxvdChoaWxvbW9kaWZpZWRbYmVnaW4sXSwgIGFlcyh4ID0gZGF0ZSwgeSA9IGFzLm51bWVyaWMoY21zKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yPSJibGFjayIpKwogIGdlb21fbGluZShhZXMoeSA9IGFzLm51bWVyaWMoc2FsdHBwdCkpLCBjb2xvciA9ICJsaWdodHN0ZWVsYmx1ZTEiKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhDb3JyLk5UVSkpLCBjb2xvcj0iZ3JleTY5IikgKwogIGdlb21fbGluZShhZXMoeT1hcy5udW1lcmljKENobFJGVSkpLGNvbG9yPSJraGFraSIpCgpwcmludChzdG9ybS4xLjcuMTMgKyBnZ3RpdGxlKCJTdG9ybSAxLzcvMTMiKStsYWJzKHg9IlRpbWUiKSkKCnN0b3JtLjEuNy4xMyA8LSBnZ3Bsb3QoaGlsb21vZGlmaWVkW2VuZCxdLCAgYWVzKHggPSBkYXRlLCB5ID0gYXMubnVtZXJpYyhjbXMpKSkgKyAKICBnZW9tX2xpbmUoY29sb3I9ImJsYWNrIikrCiAgZ2VvbV9saW5lKGFlcyh5ID0gYXMubnVtZXJpYyhzYWx0cHB0KSksIGNvbG9yID0gImxpZ2h0c3RlZWxibHVlMSIpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBhcy5udW1lcmljKENvcnIuTlRVKSksIGNvbG9yPSJncmV5NjkiKSArCiAgZ2VvbV9saW5lKGFlcyh5PWFzLm51bWVyaWMoQ2hsUkZVKSksY29sb3I9ImtoYWtpIikKCnByaW50KHN0b3JtLjEuNy4xMyArIGdndGl0bGUoIlN0b3JtIDEvNy8xMyIpK2xhYnMoeD0iVGltZSIpKQpgYGAKCmBgYHtyfQp3aGlsZSAoaSA8PSBsZW5ndGgoY2hhbmdlLnZlY3RvcikpIHsKICBpZihpc1RSVUUoY2hhbmdlLnZlY3RvcltpXSA8IDApKXsKICAgIHN0YXJ0YXhpc1tpXSA8LSBSaXZlckZsb3dbaV0KICAgIGkgPC0gaSsxCiAgfWVsc2V7CiAgICBpZihpc1RSVUUoY2hhbmdlLnZlY3RvcltpXSA+IDApKXsKICAgICAgZW5kYXhpc1tpXSA8LSBSaXZlckZsb3dbaV0KICAgIH0KICB9Cn0KYGBgCgo=
>>>>>>> Stashed changes